Go 是强类型还是弱类型?

问题描述 投票:0回答:1

来自维基百科:

某些编程语言将指针公开为数值,并允许用户对它们执行算术运算。这些语言有时被称为“弱类型”,因为指针算术可用于绕过语言的类型系统

这就是 C 被认为是“弱类型”语言的原因之一。

但是 Go 呢?它还使用指针(包括“不安全指针”)。那么,它是属于强类型还是弱类型?

go programming-languages typing
1个回答
0
投票

我们不能将 Go 指针视为数值。 Go 中的指针是存储另一个变量的内存地址的变量。它们本身不是数字,不能用于算术运算。 例如,以下代码将无法编译: 包主

import "fmt"

func main() {
  var p *int
  p = 10 // This will not compile
}

编译器将出现错误,并显示消息“cannot use 10 (type int) as type *int in assignment”。这是因为 10 是一个数值,而 p 是一个指向整数的指针。我们无法将数值分配给指针。

但是,我们可以使用 * 运算符来取消引用指针并访问它指向的值。例如,以下代码将编译并打印值 10:

package main

import "fmt"

func main() {
  var p *int
  p = new(int)
  *p = 10
  fmt.Println(*p) // This will print 10
}

因此 Go 是强类型的。

© www.soinside.com 2019 - 2024. All rights reserved.