go 语言中结构体有点类似 OOP 语言中的类,但是又有着很大区别。go 使用大小写来控制属性的访问权限,如果首字母大写在其它包中可以被访问,否则只能在本包中访问
结构体声明
1 | type Employee struct { |
对象声明及初始化
1 | // 这个时候 dibert 已经初始化并可以使用了,所有值使用零值初始化 |
1 | // 指针类型 |
属性访问
1 | fmt.Println(dilbert.Name) |
方法定义
go 的 struct 有点类似其它语言的 class, 但是又有些差异。
1 | func (e *Employee) Print() { |
匿名字段
声明一个结构体可以只写类型,不写 value,最常见的就是锁的使用,eg:
1 | type Node struct { |
匿名结构体
1 | a := &struct{}{} |