1 回答
TA贡献1772条经验 获得超8个赞
该规范中提到:
每个类型T都有一个底层类型:如果T是预先声明的布尔值、数字或字符串类型之一,或者类型文字,则相应的底层类型是T它自己。
否则,T的基础类型是T在其类型声明中引用的类型的基础类型。
T2在其类型声明中引用 to T1,它具有基础类型string。
这是基础类型的重要T2要string,因为这将有助于为可转让哪里
值 x 可分配给 T 类型的变量(“x 可分配给 T”)
x 的类型 V 和 T 具有相同的基础类型,并且 V 或 T 中的至少一个不是命名类型。
这在“ Golang:为什么我可以键入别名函数并在不强制转换的情况下使用它们? ”中也有详细说明。
当谈到 的底层类型时T4,我们谈论的是底层未命名类型[]T1。
再一次,可分配性规则说您可以分配[]T1给 T4(因为[]T1它不是命名类型):它的基础类型在第一个未命名类型 ( []T1)处停止。
在操场上看到这个例子
var t3 T3 = []T1{"a", "b"}
fmt.Println("t3='%+v'", t3)
// var t4 T4 = []string{}
// cannot use []string literal (type []string) as type T4 in assignment
var t4 T4 = T4(t3)
fmt.Println("t4='%+v'", t4)
t4 = []T1{T1("c"), T1("d")}
fmt.Println("t4='%+v'", t4)
输出:
t3='%+v' [a b]
t4='%+v' [a b]
t4='%+v' [c d]
- 1 回答
- 0 关注
- 146 浏览
添加回答
举报