【Golang】Golang 的 struct 是如何实现的?

Golang中的struct实现如下:
一、定义结构体
使用struct关键字定义结构体:

type Person struct {
   name string
   age int 
}

这里定义了一个Person结构体,包含nameage两个字段。

二、初始化结构体
可以使用struct literal来初始化结构体:

p := Person{
   name: "John",
   age: 30, 
}

三、访问结构体成员
使用.操作符访问结构体成员:

p.name   
p.age

四、结构体指针
可以定义结构体指针:

var p *Person 
p - &Person {
   name: "John",
   age: 30,
}

然后通过->操作符访问成员:

p->name 

五、方法与接收者
可以给结构体定义方法,通过接收者访问结构体成员:

func (p Person) talk() {
    fmt.Println(p.name, "说话了!")
}

p.talk()

这里p就是接收者。

六、匿名结构体
可以定义匿名结构体:

struct {
   name string
   age int
}

七、结构体标签
可以给结构体成员添加标签:tag

struct {
   Name string `json:"name"`  
}

总的来说,Golang 的struct实现包括:

  • 通过 struct 关键字定义
  • 通过 struct literal 初始化
  • 使用 . 操作符访问成员
  • 可以定义指针和方法
  • 接收者访问结构体成员
  • 匿名结构体
  • 使用结构体标签

它提供了自定义类型的能力。