Given Go主要基于C,并且用这种语言定义的结构如下:
struct Person{...}
我们为什么要在Go中添加多余的单词?
type Person struct{...}
为什么我们要同时提及类型和结构?似乎有些冗长。
答案 0 :(得分:1)
Go中所有顶级语句均以表明声明类型的关键字开头:package
,import
,type
,var
,const
,或func
,按Go specification。至于为什么做出这些决定,您需要询问做出决定的人,即Go维护者。
答案 1 :(得分:0)
一个字:一致性。
在所有type definitions中都使用type
关键字。请注意,定义的类型的underlying type不必是结构。例如,基础类型可以是接口:
type Person interface {
Name() string
}
为什么在Go语法中仅对结构例外?
答案 2 :(得分:0)
因为类型和结构在这里都很重要。您正在使用关键字类型定义类型。您的类型可以是任何一种,以下所有有效
type MyBool bool
type MyInt int
type StringList []string
type StringListPointer *StringList
要定义一个包含多个值的类型,请使用struct关键字。
type MyStruct struct {
x MyInt
y StringList
next *MyStruct
}
从技术上讲,您可以具有不定义类型的结构。这不是很经常使用,但是在某些情况下,您只打算使用一个特定的结构。这是有效的。
x := struct {
Name string
Value int
}{"Hello World!", 10}
fmt.Printf("%+v\n", x)