输出:
struct { s string; x int }{s:"abc", x:200}
注意:GC 把 uintptr 当成普通整数对象,它⽆法阻⽌ "关联" 对象被回收。
1.8 ⾃定义类型
可将类型分为命名和未命名两⼤类。命名类型包括 bool、int、string 等,⽽ array、
slice、map 等和具体元素类型、⻓度等有关,属于未命名类型。
具有相同声明的未命名类型被视为同⼀类型。
• 具有相同基类型的指针。
• 具有相同元素类型和⻓度的 array。
• 具有相同元素类型的 slice。
• 具有相同键值类型的 map。
• 具有相同元素类型和传送⽅向的 channel。
• 具有相同字段序列 (字段名、类型、标签、顺序) 的匿名 struct。
• 签名相同 (参数和返回值,不包括参数名称) 的 function。
• ⽅法集相同 (⽅法名、⽅法签名相同,和次序⽆关) 的 interface。
var a struct { x int `a` }
var b struct { x int `ab` }
// cannot use a (type struct { x int "a" }) as type struct { x int "ab" } in assignment
b = a
可⽤ type 在全局或函数内定义新类型。
func main() {
type bigint int64
var x bigint = 100
println(x)
}