go 语言结构体基础

结构体概述

Go 语言中数组和 map 可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。

定义语法

type 结构体名称 struct {
   member definition
   member definition
   ...
   member definition
}

注意

结构体名称首字母大写代表共有,内部属性大小写也是如此;

示例

package main
import "fmt"
type Person struct {
	Name string
	Age  int
}

func main() {
	var p1 Person
	// 也可以使用 new 关键字实例化结构体
	// var p1 = new(Person)
	p1.Name = "lesscode"
	p1.Age = 10
	fmt.Printf("%#v\n", p1)
}

使用 new 关键字实例化结构体后获取得到的是一个结构体指针,在 go 语言中可以通过结构体.属性的放获取或者设置指针 :

func main() {
	var p1 = new(Person)
	p1.Name = "lesscode"
	// 指针方式设置
	(*p1).Age = 100
	fmt.Printf("%#v\n 类型%T", p1, p1)
}

使用键值对的方式实例化结构体

func main() {
	var p1 = Person{
		Name: "John",
		Age:  30,
	}
	fmt.Printf("%#v 类型 %T", p1, p1)
}
// 结构体指针
func main() {
	var p1 = &Person{
		Name: "John",
		Age:  30,
	}
	fmt.Printf("%#v 类型 %T", p1, p1)
}

顺序赋值方式实例化结构体

func main() {
	var p1 = &Person{
		"John",
		30,
	}
	fmt.Printf("%#v 类型 %T", p1, p1)
}