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

news2024/10/6 10:36:06

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

声明结构体

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

语法

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

示例

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

type Person struct {
  name string
  age int
  job string
  salary int
}

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

访问结构体成员

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

示例

package main
import ("fmt")

type Person struct {
  name string
  age int
  job string
  salary int
}

func main() {
  var pers1 Person
  var pers2 Person

  // Pers1 详细信息
  pers1.name = "Hege"
  pers1.age = 45
  pers1.job = "Teacher"
  pers1.salary = 6000

  // Pers2 详细信息
  pers2.name = "Cecilie"
  pers2.age = 24
  pers2.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 string
  age int
  job string
  salary int
}

func main() {
  var pers1 Person
  var pers2 Person

  // Pers1 详细信息
  pers1.name = "Hege"
  pers1.age = 45
  pers1.job = "Teacher"
  pers1.salary = 6000

  // Pers2 详细信息
  pers2.name = "Cecilie"
  pers2.age = 24
  pers2.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.coloradmin.cn/o/1246665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

完善农业农村基础数据资源体系,加速乡村振兴

完善农业农村基础数据资源体系,加速乡村振兴 随着乡村振兴战略的实施,农业农村基础设施建设也得到了越来越多的关注。然而,在实施这一战略的过程中,我们也必须认识到,完善农业农村基础数据资源体系同样是十分重要的。 …

Docker Compose部署微服务项目实战讲解

一、Docker Compose简介 当需要在多个容器之间协调和管理应用程序时,Docker Compose是一个非常有用的工具。它允许通过一个配置文件来定义、配置和启动多个 Docker 容器,使得整个应用程序的部署变得更加简单和一致。以下是 Docker Compose 的一些重要概…

猿人学(非常简单三道题)

17. 天杀的http2.0 https://blog.csdn.net/weixin_44327634/article/details/123740008?ops_request_misc%257B%2522request%255Fid%2522%253A%2522169949361816800180633940%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id169949361816800…

机器学习/sklearn 笔记:K-means,kmeans++,MiniBatchKMeans,二分Kmeans

1 K-means介绍 1.0 方法介绍 KMeans算法通过尝试将样本分成n个方差相等的组来聚类,该算法要求指定群集的数量。它适用于大量样本,并已在许多不同领域的广泛应用领域中使用。KMeans算法将一组样本分成不相交的簇,每个簇由簇中样本的平均值描…

全志D1芯片 MIPI屏幕TFT08006支持

屏幕简介 TFT08006官方支持的一款MIPI屏幕,8寸,分辨率800*1280。官方套装支持触控。 下载 MIPI屏幕 TFT08006 patch: https://www.aw-ol.com/downloads/resources/27 MIPI屏幕 TFT08006 相关资料见:https://www.aw-ol.com/down…

OkHttpUrlConnection库编写代码示例

OkHttpUrlConnection库编写的爬虫程序,该程序使用Kotlin编写的。 kotlin import java.net.HttpURLConnection import java.net.URL import java.net.URLConnection import java.io.BufferedReader import java.io.InputStreamReader fun main() { val url UR…

java学习part09类的构造器

1. 2.默认构造器 如果没有显式定义任何构造器,系统会默认加一个默认构造器。 如果定义了,则不会有默认构造器。 默认构造器的权限和类的权限一样,类是public构造器就是public,类是缺省默认构造器就是缺省 反编译之后添加的构造…

申请二级域名

1、登录腾讯云 腾讯云 产业智变云启未来 - 腾讯 (tencent.com) 2、进入我的域名,点击主域名 3、点击前往DNSPod管理 4、点击我的域名,然后点击主域名 5、点击添加记录,进行添加二级域名信息 6、添加相应二级域名信息 7、添加后需要进行验证…

振弦式土压力计在岩土工程安全监测应用的方案

振弦式土压力计在岩土工程安全监测应用的方案 振弦式土压力计是一种常见的土压力测量仪器,其原理是利用振弦在土中传播的速度与土的应力状态有关的特点测量土压力。在岩土工程安全监测中,振弦式土压力计可以应用于以下方面: 1. 地下连续墙和…

Redis入门指南学习笔记(3):Redis高级特性

一.前言 上一篇博客对Redis常用的数据结构进行了详细介绍。Redis除了丰富的数据类型支持,还包含许多高级特性,例如事务、内存驻留策略、排序、消息队列等,本文将对这些进行逐一介绍。 二.事务 Redis同样包含事务(transaction&a…

mysql多表重复数据只保留一行的思路

一、问题描述 假设有3个表,test_a,test_b,test_c; test_a和test_b中有些重复数据; 现在要把这2个表的数据同步到表c,但是重复数据只保留1行。 样例如下: 具体要求如下: 1.tes…

Unity使用DOTween实现分段进度条

文章目录 需求下载安装 DOTween实现实现效果 需求 用组件进度条(Slider),利用分段加载进行以假乱真的进度效果,比如说2秒钟到达20%的进度,10秒钟加载20%到50%进度,1分钟加载50%到90%的进度,30秒…

沉头孔和埋头孔的区别

埋头空和沉头孔的区别在于螺栓孔上部扩孔:沉头孔是直筒结构;埋头孔是四十五度结构,比沉头孔较为平顺。 螺栓孔上部扩孔能容纳螺栓头部,使螺头部不高于周围表面。埋头空和沉头孔只是两种不同的叫法。 沉头孔是 PCB 上的圆柱形凹槽…

网站定制开发有哪些分类?|企业软件app小程序定制

网站定制开发有哪些分类?|企业软件app小程序定制 网站定制开发是指根据客户需求,为其量身定制设计和开发的网站服务。目前,网站定制开发主要分为以下几个分类: 1. 静态网站定制开发:静态网站是由HTML、CSS和JavaScrip…

多模态常见任务介绍

视觉问答(VQA, Visual Question Answer) 目标:给定一个图片以及问题,需要理解图片的内容并基于此用自然语言回答问题。 例如,图像中发生什么事,人物穿的衣服是什么颜色,图像中有多…

算法:给出指定整数区间、期望值,得到最终结果

1,问题: 在游戏中,我们经常会遇到以下情况:打开宝箱,获得x个卡牌碎片。 但通常策划只会给一个既定的数值空间,和一个期望得到的值,然后让我们去随机。比如: 问题A:在1~…

浪涌Surge整改:保护和优化电力系统!|深圳比创达电子EMC

一、浪涌现象简介 浪涌是一种在电气系统中常见的现象,其涉及电压、电流的突然增加,超过系统的正常操作范围。这可能是由许多因素引起的,如雷击、设备故障、或电网中的突然负荷变化。浪涌可能导致设备损坏,甚至可能危及人员安全。…

css引入的三种方式

css引入的三种方式 一、内联样式二、外部样式表三、 内部样式表总结trouble 一、内联样式 内联样式也被称为行内样式。它是将 CSS 样式直接应用于 HTML 元素的 style 属性中的一种方式 <p style"color: blue; font-size: 16px;">这是一个带有内联样式的段落。&…

前后端性能优化实践(含Java代码部分、数据库部分、React前端部分)

最近的一个大屏报表统计的接口查询速度很慢&#xff0c;耗时近一分钟左右&#xff0c;数据量级只是700万左右&#xff0c;但很慢&#xff0c;最后优化到4秒左右&#xff0c;客户还能接受&#xff0c;但其实还可以在优化&#xff0c;先这样吧&#xff0c;简单记录下。这次主要优…

接口测试学习路线

接口测试分为两种&#xff1a; 测试外部接口&#xff1a;系统和外部系统之间的接口 如&#xff1a;电商网站&#xff1a;支付宝支付 测试内部接口&#xff1a;系统内部的模块之间的联调&#xff0c;或者子系统之间的数据交互 测试重点&#xff1a;测试接口参数传递的正确性&…