当前位置:网站首页>【愚公系列】2022年07月 Go教学课程 026-结构体
【愚公系列】2022年07月 Go教学课程 026-结构体
2022-08-03 08:07:00 【愚公搬代码】
一、结构体
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)
}
}

边栏推荐
- WPF 学习笔记《WPF样式基础》
- ArcEngine (5) use the ICommand interface to achieve zoom in and zoom out
- 【Kaggle实战】泰坦尼克号生存人数预测(从零到提交到Kaggle再到模型的保存与恢复)
- pyspark df secondary sorting
- 熊市中预言机,牛市中的战斗机,藏宝计划起飞,坐稳扶好!
- IDEA的database使用教程(使用mysql数据库)
- AI中台序列标注任务:三个数据集构造过程记录
- 行业洞察 | 如何更好的实现与虚拟人的互动体验?
- HCIP练习(OSPF)
- FusionAccess软件架构、FusionAccess必须配置的四个组件、桌面发放流程、虚拟机组类型、桌面组类型
猜你喜欢
随机推荐
uniapp swiper 卡片轮播 修改指示点样式效果demo(整理)
@Async注解的坑,小心
Pyspark - an empty string is replaced by None
AI mid-stage sequence labeling task: three data set construction process records
Karatsuba大数乘法的Verilog实现
Postman will return to results generated CSV file to the local interface
word之个人设置
Mysql的in和exists用法区别
2022下半年软考「高项&集成」复习计划ta来喽~
前缀和(区间和,子矩阵的和)
LeetCode 264:丑数
mysql存生僻字奇怪问题,mysql为什么不能辨别mb4字符?
rust 学习笔记
Roson的Qt之旅#105 QML Image引用大尺寸图片
Shell运维开发基础(一)
热部署系统实现
The Transformer, BERT, GPT paper intensive reading notes
volta管理node版本
加速FinOps实践,为企业降本增效
五、《图解HTTP》报文首部和HTTP缓存









