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

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

声明结构体

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

语法

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

示例

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

type Person struct {name stringage intjob stringsalary int
}

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

访问结构体成员

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

示例

package main
import ("fmt")type Person struct {name stringage intjob stringsalary int
}func main() {var pers1 Personvar pers2 Person// Pers1 详细信息pers1.name = "Hege"pers1.age = 45pers1.job = "Teacher"pers1.salary = 6000// Pers2 详细信息pers2.name = "Cecilie"pers2.age = 24pers2.job = "Marketing"pers2.salary = 4500// 访问并打印 Pers1 信息fmt.Println("Name: ", pers1.name)fmt.Println("Age: ", pers1.age)fmt.Println("Job: ", pers1.job)fmt.Println("Salary: ", pers1.salary)// 访问并打印 Pers2 信息fmt.Println("Name: ", pers2.name)fmt.Println("Age: ", pers2.age)fmt.Println("Job: ", pers2.job)fmt.Println("Salary: ", pers2.salary)
}

结果:

Name: Hege
Age: 45
Job: Teacher
Salary: 6000
Name: Cecilie
Age: 24
Job: Marketing
Salary: 4500

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

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

示例

package main
import ("fmt")type Person struct {name stringage intjob stringsalary int
}func main() {var pers1 Personvar pers2 Person// Pers1 详细信息pers1.name = "Hege"pers1.age = 45pers1.job = "Teacher"pers1.salary = 6000// Pers2 详细信息pers2.name = "Cecilie"pers2.age = 24pers2.job = "Marketing"pers2.salary = 4500// 通过调用函数打印 Pers1 信息printPerson(pers1)// 通过调用函数打印 Pers2 信息printPerson(pers2)
}func printPerson(pers Person) {fmt.Println("Name: ", pers.name)fmt.Println("Age: ", pers.age)fmt.Println("Job: ", pers.job)fmt.Println("Salary: ", pers.salary)
}

结果:

Name: Hege
Age: 45
Job: Teacher
Salary: 6000
Name: Cecilie
Age: 24
Job: Marketing
Salary: 4500

最后

为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/214504.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux(6):文件与文件系统的压缩,打包与备份

压缩文件的用途与技术 由于 1 byte 8 bits ,所以每个byte当中会有8个空格,而每个空格可以是0,1。 其实文件里面有相当多的『空间』存在,并不是完全填满的,而『压缩』的技术就是将这些『空间』填满,以让整个文件占用…

5分钟搞定!学会使用pytest测试框架!

本文将会把关于 Pytest 的内容分上下两篇,上篇主要涉及关于 pytest 概念以及功能组件知识的介绍,下篇主要以一个 Web 项目来将 Pytest 运用实践中。 为什么要做单元测试 相信很多 Python 使用者都会有这么一个经历,为了测试某个模块或者某个…

原始类型 vs. 对象实践应用

● 首先是原始类型的例子 let lastName Williams; let oldLastName lastName; lastName Davis; console.log(lastName.oldLastName);● 然后是对象的例子 const jessica {firstName: Jessica,lastName: Williams,age: 27, }; const marriedJessica jessica; marriedJess…

教育数字化转型:塑造未来学习新范式

在国家教育数字化战略行动指引下,我国正积极推动数字化赋能教育高质量发展,以塑造教育发展的新优势。如今,随着科技新基建的普及和数字化赋能教育的深入推进,未来的教育模型正在逐渐形成。 在新的教育模型中,数字化学…

Doris中的物化视图(十八)

物化视图就是包含了查询结果的数据库对象,可能是对远程数据的本地 copy,也可能是一个表或多表 join 后结果的行或列的子集,也可能是聚合后的结果。说白了,就是预先存储查询结果的一种数据库对象。 在 Doris 中的物化视图&#xf…

docker的使用方法

文章目录 为什么要用dockerdocker安装docker工作原理docker命令docker搭建练习docker可视化docker镜像docker容器数据卷DockerFiledocker全流程Docker网络原理docker composedocker swarm 为什么要用docker 官网:https://www.docker.com文档地址:https:…

Jmeter接口测试——使用教程(上)

前言 jmeter是一款小巧,轻便、开源的性能测试工具,它也可以很方便的进行接口测试。 下面我就带大家学习下jmeter接口测试。 一、Jmeter简介 Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使…

Java 之 final 详解

目录 一. 前言 二. final 的基础使用 2.1. 修饰类 2.2. 修饰方法 2.2.1. private 方法是隐式的 final 2.2.2. final 方法可以被重载 2.3. 修饰参数 2.4. 修饰变量 2.4.1. static final 2.4.2. blank final 2.4.3. 所有 final 修饰的字段都是编译期常量吗&#xff1f…

10年测试老鸟,自动化测试经验10条建议,一路狂飙...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、哪一刻&#x…

安卓手机SD卡不小心删除了怎么办?几步轻松恢复数据!

随着科技的不断发展,安卓手机已经成为了我们生活中不可或缺的一部分。然而,在使用安卓手机的过程中,我们有时会不小心将重要的文件或者照片删除掉,这无疑会给我们的生活带来不便。那么,当安卓手机的SD卡不小心被删除了…

IDEA必备插件!一键生成接口文档

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具,而今天给大家介绍一款IDEA插件&…

什么葡萄酒会适用这种双重滗析方法呢?

滗析有两个主要目的,一种是去除陈年或未经过滤的葡萄酒中的沉淀物。虽然沉淀物不会对你造成任何伤害,但当喝葡萄酒满嘴都是葡萄沉淀物时是一件很糟糕的事。其次,倾析葡萄酒是可以让葡萄酒“呼吸”与氧气接触的,氧气可以软化单宁&a…