1 、什么是结构体
GO语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
2、什么是实例化?
- Go结构体的定义只是一种内存布局的描述,只有当结构体实例化时,才会真正分配内存。因此必须在定义结构体并实例化后才能使用结构体实例化就是根据结构体定义的格式创建一份与格式一致的內存区域。
- 结构体实例之间的内存是完全独立的。
package main import "fmt" func main() { //实例化方式一 var stu1 Student fmt.Printf("stu1=%T,%v,%q \n", stu1, stu1, stu1) stu1.name = "zs" stu1.age = 12 stu1.sex = 1 fmt.Printf("stu1=%T,%v,%q \n", stu1, stu1, stu1) //实例化方式二 stu2 := Student{} stu2.name = "David" stu2.age = 33 stu2.sex = 1 fmt.Printf("stu2=%T,%v,%q \n", stu2, stu2, stu2) //实例化方式三 stu3 := Student{ name: "Josh", age: 28, sex: 1, } fmt.Printf("stu3=%T,%v,%q \n", stu3, stu3, stu3) //实例化四 stu4 := Student{"Ruby", 30, 0} fmt.Printf("stu3=%T,%v,%q \n", stu4, stu4, stu4) //实例化五 //使用内置函数new()对结构体进行实例化,结构体实例化后形成指针类型的结构体 //·new内置函数会分配内存。第一个参数是类型,而不是值,返回的值是指向该类型新分配的零值的指针。该函数用于创建某个类型的指针。 stu5 := new(Student) (*stu5).name = "Running" (*stu5).age = 31 stu5.sex = 0 //语法糖的方式 fmt.Printf("stu3=%T,%v,%q \n", stu5, stu5, stu5) //stu3=*main.Student,&{Running 31 0},&{"Running" '\x1f' '\x00'} } //结构体的定义 type Student struct { name string age int sex int8 }