小编Nic*_*k B的帖子

golang 规范中的可分配性问题

在阅读 go 规范“可分配性”部分时,我尝试执行几个示例以更好地理解该主题,但现在我不知道我在代码中做错了什么。

根据规范,将值x分配给类型变量的情况之一T如下:

x 的类型 V 和 T 具有相同的基础类型,并且 V 或 T 中至少有一个不是定义的类型。

定义的类型规范指出

类型定义创建一个新的、不同的类型,其底层类型和操作与给定类型相同,并为其绑定一个标识符。

但是当我尝试运行以下代码时,构建失败:

func main() {
    type Defined int32
    var d Defined
    var i int32
    d = i
}
Run Code Online (Sandbox Code Playgroud)

输出是:

cannot use i (type int32) as type Defined in assignment
Run Code Online (Sandbox Code Playgroud)

同时,具有复合文字的类似示例工作正常:

func main() {
    type MyMap map[string]int
    var x MyMap 
    var y map[string]int
    x = y
}
Run Code Online (Sandbox Code Playgroud)

操场

go language-specifications

5
推荐指数
1
解决办法
145
查看次数

标签 统计

go ×1

language-specifications ×1