
Go 通过类别别名(alias types)和结构体的方式支持客户自定义类型,或者叫定制类型。试图表示一个现实世界中的实体。
结构体由一系列命名的元素构成,这些元素既被称为字段,每个字段都有一个名称跟一个类型。
结构体的目的就是把数据聚集在一起,以便能够非常方便地操作这种数据。结构体的概念在 C 语言里最常用,被称为 struct。Golang 中的结构体也是 struct。Go 语言中没有类的概念,因此在 Go 中结构体有着更为重要的地位。结构体是复合类别(composite types),当必须定义一个类型,它由一系列属性构成,每个属性都有自己的类型和值的之后结构体,就必须使用结构体,它把数据聚集在一起。然后可以访问那些数据,就似乎它是一个独立实体的一部分。结构体也是值类别,因此可以借助 new 函数来创建。

在 Golang 中更常见的方式是使用关键字 type 和 struct 来定义一个结构体,以关键字 type 开始,之后是新类型的名字结构体,最后是关键字 struct:
// Person 为用户定义的一个类型
type Person struct {
Name string
Age int
Email string
}
还有一些简单的写法,比如:

type T struct { a, b int }
也是合法的,它最适用于简单的结构体。
结构体里的数组都有名字,比如前面例子中的 Name、Age 和 Email 等等。如果一个字段在代码中从来不会被用到,那可以把它命名为 _,即空标识符。

结构体中的数组可以是任何类别,甚至是结构体本身,也可以是变量以及接口。可以声明结构体类型的一个变量,然后像以下这种给它的字段赋值:
var p Person
p.Name = "nick"
p.Age = 28
另外,数组可以看作是一种结构体类型,不过它使用数组而不是具名的字段。

字段标记
在定义结构体时还可以为数组指定一个标记信息:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Email string `json:"email"`
}
这些标记信息通过反射接口可见,并参与结构体的类别标识,但在其它状况下被忽视。
一旦定义了结构体类型就可以使用这个类别创建值。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-140551-1.html
ear见面会#演好戏