1、创建结构体
func createStruct() { //结构体中的成员变量不能加var关键字 type Student struct { id int name string age int addr string } }
2、结构体初始化
func createStruct() { //结构体中的成员变量不能加var关键字 type Student struct { id int name string age int addr string } //结构体顺序初始化 var student Student = Student{1,"小松",20,"江苏无锡"} //部分初始化 var student Student = Student{name:"小松",age:18} //通过结构体.成员 var stu Student stu.id = 18 stu.name = "test" stu.age = 10 }
3、结构体与数组
func arrayStruct() { var arr[3] Student = [3]Student{ {101,"小松",21,"江苏省无锡市"}, {102,"小明",20,"陕西省西安市"}, {103,"小猪",17,"上海市黄浦区"}, } arr[0].age = 32 fmt.Println(arr) fmt.Println(arr[0]) fmt.Println(arr[0].age) //通过循环来输出结构体数组中的内容 for i := 0; i < len(arr); i++ { fmt.Println(arr[i].age) } for k, v := range arr { fmt.Println(k) fmt.Println(v) } }
4、结构体与切片
func sliceStruct() { var slice []Student = []Student{ {101,"小松",21,"江苏省无锡市"}, {102,"小明",20,"陕西省西安市"}, {103,"小猪",17,"上海市黄浦区"}, {104,"小红",17,"江苏省无锡市"}, } fmt.Println(slice[3]) fmt.Println(slice[0].age) slice[0].age = 1000 fmt.Println(slice[0].age) //循环遍历 for i := 0; i < len(slice); i++ { fmt.Println(slice[i].name) } for k, v := range slice { fmt.Println(k) fmt.Println(v) } //使用append追加数据 slice = append(slice,Student{105,"小六",24,"河南省信阳市"}) fmt.Println(slice) }
5、结构体与map
func mapStruct() { m := make(map[int]Student) m[0] = Student{101,"小松",21,"江苏省无锡市"} m[1] = Student{102,"小明",20,"陕西省西安市"} fmt.Println(m) }
6、结构体作为参数
func funcStruct() { stu := Student{101,"小松",21,"江苏省无锡市"} stuStruct(stu) //在stu函数中不能修改stu的值 fmt.Println(stu) } func stuStruct(stu Student) { stu.age = 55 fmt.Println(stu) }
7、案例学习,输出年龄最大的学生信息
//输出年龄最大的学生信息 func main() { stu := make([]Student,3) InitData(stu) maxIndex := getMax(stu) fmt.Println(stu[maxIndex]) } func InitData(stu []Student) { for i := 0; i < len(stu); i++ { fmt.Printf("请输入%d个学生信息\n",i + 1) fmt.Scan(&stu[i].id,&stu[i].name,&stu[i].age,&stu[i].addr) } } //获取年龄最大的学生的index func getMax(stu []Student) int{ var Max int = stu[0].age var maxIndex int = 0 for i := 1; i < len(stu); i++ { if Max < stu[i].age{ Max = stu[i].age maxIndex = i } } return maxIndex }