结构体
基本介绍
基本介绍
- Go支持面向对象编程特性,包括封装、继承和多态,但Go中没有类(class)而是基于结构体(struct)来实现OOP特性的。
- 结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体,结构体中的成员称为结构体的字段。
- 在编程过程中,通常将一类事物的特性提取出来,形成一个结构体类型,然后基于这个结构体类型创建出多个实例。
结构体定义方式
结构体定义方式
Go中结构体定义的基本语法如下:
使用案例如下:
// 定义结构体
type Student struct {
Name string
Age int
Gender string
}
结构体是值类型,不同结构体变量的字段是独立的,互不影响。如下:
说明一下:
- 结构体中字段的类型可以是任意类型,包括基本数据类型、数组、引用类型以及自定义类型。
创建结构体变量
创建结构体变量
方式一: 指明结构体的类型,结构体字段采用对应的默认值。
var stu1 Student
fmt.Printf("stu1 = %v\n", stu1) // stu1 = { 0 }
fmt.Printf("stu1 type = %T\n", stu1) // stu1 type = main.Student
方式二: 指明结构体的类型,并初始化结构体字段。
var stu2 = Student{
"Alice", 12, "女"}
fmt.Printf("stu2 = %v\n", stu2) // stu2 = {Alice 12 女}
fmt.Printf("stu2 type = %T\n", stu2) // stu2 type = main.Student
方式三: 指明结构体的类型,并通过字段名的方式初始化结构体字段。
var stu3 = Student{
Name: "Alice",
Age: 12,
Gender: "女",
}
fmt.Printf("stu3 = %v\n", stu3) // stu3 = {Alice 12 女}
fmt.Printf("stu3 type = %T\n", stu3) // stu3 type = main.Student
方式四: 通过new函数创建指定类型的结构体变量,得到指向结构体变量的指针。
var stu4 = new(Student)
fmt.Printf("stu4 = %v\n", stu4) // stu4 = &{ 0 }
fmt.Printf("stu4 type = %T\n", stu4) // stu4 type = *main.Student
方式五: 指明结构体的类型,并初始化结构体字段,得到指向结构体变量的指针。
var stu5 = &Student{
"Alice", 12, "女"}
fmt.Printf("stu5 = %v\n", stu5) // stu5 = &{Alice 12 女}
fmt.Printf("stu5 type = %T\n", stu5) // stu5 type = *main.Student
方式六: 指明结构体的类型,并通过字段名的方式初始化结构体字段,得到指向结构体变量的指针。
var stu6 =