结构体是一个自定义的数据类型,是值类型
声明结构体
type 结构体名称 struct {
field_1 type
field_2 type
}
注意事项
字段声明语法同变量,示例:字段名 字段类型
字段的类型可以为:基本类型、数组或引用类型
创建一个结构体变量后,如果没有给字段赋值,都会对应一个默认值,规则如下:
布尔类型默认为false
数值类型默认为0
字符串类型默认为空""
数组类型的默认值与它的元素类型相关,比如:Scores [3]int 默认值为:[0,0,0]
指针、切片(slice)、map默认值都是nil,即还没有分配空间
不同的结构体字段之间是独立的,互不影响,一个字段值的改变不会影响另外一个
基本使用
package main
import "fmt"
type Stu struct {
Name string
Age int
Score float32
Ptr *int // 指针
Array [3]int // 数组
Slice []string // 切片
Map1 map[string]string // map
}
func main() {
// 结构体基本使用
var student Stu
student.Name = "宋江"
student.Age = 20
student.Score = 60
fmt.Println(student)
// 单独访问变量
fmt.Printf("Name:%v,Age:%v,Score:%v\n", student.Name, student.Age, student.Score)
// 给数组赋值
student.Array = [3]int{1, 2, 0}
student.Array[2] = 3
// 给切片赋值,切片赋值必须make!!!
student.Slice = make([]string, 3)
student.Slice[0] = "卢俊义"
student.Slice[1] = "吴用"
student.Slice[2] = "公孙胜"