环境
go version go1.10.1 darwin/amd64
结构体
一个结构体(struct)就是一个字段的集合。(而type声明就是定义类型的)。详细的介绍可以看下面的实例
package main
import "fmt"
// Rectangle 长方形
type Rectangle struct {
width int
height int
}
func main() {
fmt.Println(Rectangle{3, 4})
}
运行后输出如下
{3 4}
结构体字段
结构体字段使用点号来访问。
package main
import "fmt"
// Rectangle 长方形
type Rectangle struct {
width int
height int
}
func main() {
rectangle := Rectangle{3, 4}
rectangle.width = 4
fmt.Println(rectangle.width)
}
运行后输出如下
4
结构体指针
结构体字段可以通过结构体指针来访问。
如果有一个指向结构体的指p,那么可以通过(*p).X 来访问其字段X。不过这么写太啰嗦了,所以语言也允许我们使用隐式间接引用,直接写 p.X 就可以。
package main
import "fmt"
// Rectangle 长方形
type Rectangle struct {
width int
height int
}
func main() {
rectangle := Rectangle{3, 4}
p := &rectangle
p.width = 1e9
fmt.Println(rectangle)
}
运行后输出如下
{1000000000 4}
结构体文法
结构体文法通过直接列出字段的值来新分配一个结构体。
使用Name:语法可以仅列出部分字段。(字段名的顺序无关)
特殊的前缀 & 返回一个指向结构体的指针。如下
package main
import "fmt"
// Rectangle 长方形
type Rectangle struct {
width int
height int
}
var (
a = Rectangle{3, 4} // Rectangle类型
b = Rectangle{width: 1} // height:0 是隐含的
c = Rectangle{} // width:0和height:0是隐含的
d = &Rectangle{5, 6} // &Rectangle类型
)
func main() {
fmt.Println(a, b, c, d)
}
运行后结果如下
{3 4} {1 0} {0 0} &{5 6}
版权声明
由 durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。