go - Go 中的 int 数据类型

标签 go int

我是 Go 语言的新手,正在尝试 GO 中的几个示例。
在 GO 中 int 不是关键字,所以我声明了一个名称为 int 的变量。

package main
import "fmt"

func main() {
    var int int = 8
    fmt.Println(int)

    var number int = 10
    fmt.Println(number)
}

现在,当我构建这段代码时,出现以下错误:

[dev@go test]$ go build variables.go
# command-line-arguments
./variables.go:8: int is not a type

我试图理解为什么会出现这种情况,以及 var int int 做了什么使得 int 成为不可用的数据类型。

最佳答案

package main

import "fmt"

func main() {
    // int is a predeclared type identifier
    var int int = 8
    // int is a variable identifier
    fmt.Println(int)

    // error: int is not a type
    var number int = 10
    fmt.Println(number)
}

您正在隐藏 int 标识符。

参见 The Go Programming Language Specification .

Go 是一种 block 结构化编程语言:

Blocks

Declarations and scope

intpredeclared identifier并在 universe block 中隐式声明。

在函数内声明的变量标识符的范围从声明的末尾开始,到最里面的包含 block 的末尾结束。

声明

var int int = 8

使用预先声明的 int 类型来声明变量标识符 int,隐藏预先声明的标识符:Variable shadowing .

关于go - Go 中的 int 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45836683/

相关文章:

go - 解释方法表达式的打印值

unit-testing - 如何在 Golang 中实现 stub ? stub 和模拟之间有什么区别?

go - testing.M 在 golang 中恢复

c - 这个 int 指针示例需要 malloc 吗?

c++:如何翻转int中每个位的二进制值

go - 如何从远程机器连接到kubernetes pod?

java - int(primitive) 值未隐式转换为 long(primitive)

python - 为什么这个 Python 转换对于 map 和没有 map 的行为不同

for循环中列表修改的python行为

plugins - 如何向 Telegraf 添加插件?