Golang中的结构声明

时间:2018-09-21 20:19:08

标签: go

Given Go主要基于C,并且用这种语言定义的结构如下:

struct Person{...}

我们为什么要在Go中添加多余的单词?

type Person struct{...}

为什么我们要同时提及类型和结构?似乎有些冗长。

3 个答案:

答案 0 :(得分:1)

Go中所有顶级语句均以表明声明类型的关键字开头:packageimporttypevarconst,或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)