package main
var Book struct{
title string
price int
}
func main(){
}
上面的代码没有报错,不是用type定义结构体吗
有疑问加站长微信联系(非本文作者)

package main
var Book struct{
title string
price int
}
func main(){
}
上面的代码没有报错,不是用type定义结构体吗
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
这个应该是定义了匿名struct类型的Book变量
只不过形式和type有很像
main中用var b Book会报错:Book is not a type,也不知道怎么回事的。
直接Book.title="go"就没报错了
Book是个变量,不是类型。
定义了一个变量Book,它的类型是 struct{ title string price int }
是个匿名struct类型
可以的
原来是这样,一直以为Book是结构体,原来只是个变量
匿名struct类型,这样就说得通了
这里的
Book
是个变量,不是类型。误以为是个结构体了,感觉go有挺多隐匿的东西
type
用来定义类型var
用来定义变量type 类型名 类型
如type NewInt int
var 变量名 类型
如var count int
所以
定义了一个名字为
Book
的结构体,其类型是struct那一坨,但一般不这样做,通常会先定义一个结构体类型,再定义一个对应的变量匿名类型其实我们一直在用,只不多没有注意到罢了,比如平时使用的
var x interface{}
里面的interface{}
就是一个匿名空接口,跟下面代码等价go的匿名还真多,匿名结构体,匿名接口,匿名类型,请问还有哪些匿名?想学习下,按你的提示写了个匿名接口,觉得挺方便
匿名有时候跟
字面量
是等价的,常见的是结构体字面量等号右边的就是Book结构体字面量
匿名函数是函数的字面量表示,还有用
map[string]int{}
,[]int
分别代表字典和slice的字面量。其实就是不用跟具体名字绑定。其余的你可以探索一下。
没想到go能有这么多花样,大开眼界了