Go 语言中结构体的使用和示例

结构体(简称 struct)用于创建不同数据类型的成员集合,放入一个单一的变量中

虽然数组用于将相同数据类型的多个值存储在单一变量中,但结构体用于将不同数据类型的多个值存储在单一变量中。结构体对于将数据组合在一起以创建记录非常有用。

声明结构体

要在 Go 中声明一个结构体,请使用 type struct 关键字:

语法

1type 结构体名 struct { 2 成员1 数据类型; 3 成员2 数据类型; 4 成员3 数据类型; 5 ... 6}

示例

在这里,我们声明了一个名为Person的结构体类型,其中包含以下成员:name、age、job和salary:

1type Person struct { 2 name string 3 age int 4 job string 5 salary int 6}

提示: 请注意,上述结构体成员具有不同的数据类型。name和job是string类型,而age和salary是int类型。

访问结构体成员

要访问结构体的任何成员,使用结构体变量名称和结构体成员之间的点运算符(.):

示例

1package main 2import ("fmt") 3 4type Person struct { 5 name string 6 age int 7 job string 8 salary int 9} 10 11func main() { 12 var pers1 Person 13 var pers2 Person 14 15 // Pers1 详细信息 16 pers1.name = "Hege" 17 pers1.age = 45 18 pers1.job = "Teacher" 19 pers1.salary = 6000 20 21 // Pers2 详细信息 22 pers2.name = "Cecilie" 23 pers2.age = 24 24 pers2.job = "Marketing" 25 pers2.salary = 4500 26 27 // 访问并打印 Pers1 信息 28 fmt.Println("Name: ", pers1.name) 29 fmt.Println("Age: ", pers1.age) 30 fmt.Println("Job: ", pers1.job) 31 fmt.Println("Salary: ", pers1.salary) 32 33 // 访问并打印 Pers2 信息 34 fmt.Println("Name: ", pers2.name) 35 fmt.Println("Age: ", pers2.age) 36 fmt.Println("Job: ", pers2.job) 37 fmt.Println("Salary: ", pers2.salary) 38}

结果:

1Name: Hege 2Age: 45 3Job: Teacher 4Salary: 6000 5Name: Cecilie 6Age: 24 7Job: Marketing 8Salary: 4500

将结构体作为函数参数传递

您也可以将结构体作为函数参数传递,如下所示:

示例

1package main 2import ("fmt") 3 4type Person struct { 5 name string 6 age int 7 job string 8 salary int 9} 10 11func main() { 12 var pers1 Person 13 var pers2 Person 14 15 // Pers1 详细信息 16 pers1.name = "Hege" 17 pers1.age = 45 18 pers1.job = "Teacher" 19 pers1.salary = 6000 20 21 // Pers2 详细信息 22 pers2.name = "Cecilie" 23 pers2.age = 24 24 pers2.job = "Marketing" 25 pers2.salary = 4500 26 27 // 通过调用函数打印 Pers1 信息 28 printPerson(pers1) 29 30 // 通过调用函数打印 Pers2 信息 31 printPerson(pers2) 32} 33 34func printPerson(pers Person) { 35 fmt.Println("Name: ", pers.name) 36 fmt.Println("Age: ", pers.age) 37 fmt.Println("Job: ", pers.job) 38 fmt.Println("Salary: ", pers.salary) 39}

结果:

1Name: Hege 2Age: 45 3Job: Teacher 4Salary: 6000 5Name: Cecilie 6Age: 24 7Job: Marketing 8Salary: 4500

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

点赞
收藏

评论区

加载中...

相关推荐

我的C语言基础

C语言32个关键字auto声明自动变量short声明短整型变量或函数int声明整型变量或函数long声明长整型变量或函数float声明浮点型变量或函数double声明双精度变量或函数char声明字符型变量或函数struct声明结构体变量或函数union声明共用数据类型enum声明枚举类型typedef用以给数据类型取别名co

DLL 函数中使用结构体指针作函数参数(C# 调用 C++ 的 DLL)

存在的问题:问题1:C与C同样定义的结构体在内存布局上有时并不一致;问题2:C中引入了垃圾自动回收机制,其垃圾回收器可能会重新定位指针所指向的结构体变量。解决方案:问题1方案:强制指定C、C结构体的内存布局,使其一致(两者都固定为:结构体的成员按其声明时出现的顺序依次布局,结构体成员的内存对齐为1字节对齐);为题

GO值类型与引用类型

值类型值类型包括基本数据类型,int,float,bool,string,以及数组和结构体(struct)。值类型变量声明后,不管是否已经赋值,编译器为其分配内存,此时该值存储于栈上。值类型的默认值:varaint//int类型默认值为0varbstring//string类型默认值为n

Rust 入门 (五)

定义并介绍结构体结构体和我们前面学习的元组类似,结构体中的每一项都可以是不同的数据类型。和元组不同的地方在于,我们需要给结构体的每一项命名。结构体较元组的优势是:我们声明和访问数据项的时候不必使用索引,可以直接使用名字。声明结构体我们直接看一个结构体的例子:structUser{user

Systemverilog for design 笔记(四)

转载请标明出处数组、结构体和联合体1. 结构体(struct)1.1. 结构体声明结构体默认是变量,也可以声明为线网varstruct {//通过var进行结构体变量声明logic\31:0\a,b;

C#

结构体概念  在C中,结构体是值类型,一般适用于表示类似Point、Rectangle、Color的对象  值类型能够降低对堆的管理、使用。降低垃圾回收,表现出更好的性能。可是值类型也有不好的一面。会涉及到装箱拆箱等操作结构体声明  结构体声明定义了一种新的数据类型,这个数据类型可以为程序包含一个以上的成员变量