【愚公系列】2022 年 10 月 Go 教学课程 026- 结构体
作者:愚公搬代码
- 2022-10-12 福建
本文字数:1107 字
阅读完需:约 4 分钟
一、结构体
1.结构体的定义
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体可以很好地管理一批有联系的数据,使用结构体可以提高程序的易读性
2.结构体创建与初始化
结构体的格式
type 结构体名 struct {
成员名 数据类型
...................
}
复制代码
相关案例:
package main
import "fmt"
// 成员名称前面不能添加var.
type Student struct {
id int
name string
age int
addr string
}
func main() {
var s Student = Student{101, "愚公", 18, "福建"}
fmt.Println(s)
// 部分初始化
var s1 Student = Student{name: "愚公", age: 18}
fmt.Println(s1)
var stu Student
stu.id = 102
stu.name = "愚公"
stu.age = 28
stu.addr = "南平"
fmt.Println(stu)
}
复制代码
3.结构体和数组
package main
import "fmt"
type Student struct {
id int
name string
age int
addr string
}
func main() {
var arr [3]Student = [3]Student{
Student{101, "1号", 18, "北京"},
Student{102, "2号", 18, "北京"},
Student{103, "3号", 19, "北京"},
}
fmt.Println(arr)
fmt.Println(arr[0])
fmt.Println(arr[0].age)
arr[0].age = 20
fmt.Println(arr)
// 通过循环来输出结构体数组中的内容。
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i].age)
}
for k, v := range arr {
fmt.Println(k)
fmt.Println(v.age)
}
}
复制代码
4.结构体和切片
package main
import "fmt"
type Student struct {
id int
name string
age int
addr string
}
func main() {
var s []Student = []Student{
Student{101, "张三", 18, "北京"},
Student{102, "李四", 18, "北京"},
}
fmt.Println(s[0])
fmt.Println(s[0].age)
s[0].age = 20
fmt.Println(s)
// 循环遍历
for i := 0; i < len(s); i++ {
fmt.Println(s[i].name)
}
for k, v := range s {
fmt.Println(k)
fmt.Println(v.id)
}
// 追加数据
s = append(s, Student{103, "王五", 20, "北京"})
fmt.Println(s)
}
复制代码
5.结构体和 Map
package main
import "fmt"
type Student struct {
id int
name string
age int
addr string
}
func main() {
m := make(map[int]Student)
m[1] = Student{101, "张三", 18, "北京"}
m[2] = Student{102, "李四", 18, "北京"}
fmt.Println(m)
fmt.Println(m[1])
fmt.Println(m[1].name)
delete(m, 2)
fmt.Println(m)
for key, value := range m {
fmt.Println(key)
fmt.Println(value.age)
}
}
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 3
版权声明: 本文为 InfoQ 作者【愚公搬代码】的原创文章。
原文链接:【http://xie.infoq.cn/article/ac9ea59895812019f6611d481】。文章转载请联系作者。
愚公搬代码
关注
还未添加个人签名 2022-03-01 加入
该博客包括:.NET、Java、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、python、大数据等相关使用及进阶知识。查看博客过程中,如有任何问题,皆可随时沟通。
评论