当前位置: 首页 > news >正文

go语言学习之旅之Go结构体

在Go语言中,结构体(struct)是一种用户定义的数据类型,用于组合不同类型的数据项。结构体可以包含其他结构体或基本数据类型的字段。以下是关于Go语言结构体的基本知识:

定义结构体:

package mainimport "fmt"// 定义一个结构体
type Person struct {FirstName stringLastName  stringAge       int
}func main() {// 创建结构体实例person1 := Person{FirstName: "John",LastName:  "Doe",Age:       30,}// 访问结构体字段fmt.Println("First Name:", person1.FirstName)fmt.Println("Last Name:", person1.LastName)fmt.Println("Age:", person1.Age)
}

结构体的零值:

未初始化的结构体字段将使用它们的零值。对于字符串类型,零值是空字符串;对于数值类型,零值是0。

匿名结构体:

可以在使用的地方直接定义结构体,而不必显式声明结构体类型。

package mainimport "fmt"func main() {// 匿名结构体person := struct {FirstName stringLastName  stringAge       int}{FirstName: "Jane",LastName:  "Doe",Age:       25,}fmt.Println("First Name:", person.FirstName)fmt.Println("Last Name:", person.LastName)fmt.Println("Age:", person.Age)
}

结构体方法:

可以在结构体上定义方法,这是一种在结构体上附加行为的方式。

package mainimport "fmt"type Rectangle struct {Width  float64Height float64
}// 定义结构体方法
func (r Rectangle) Area() float64 {return r.Width * r.Height
}func main() {rectangle := Rectangle{Width:  10,Height: 5,}// 调用结构体方法area := rectangle.Area()fmt.Println("Area of the rectangle:", area)
}

嵌套结构体:

结构体可以包含其他结构体,形成嵌套结构体。

package mainimport "fmt"type Address struct {City  stringState string
}type Person struct {FirstName stringLastName  stringAge       intAddress   Address // 嵌套结构体
}func main() {// 创建嵌套结构体实例person := Person{FirstName: "Alice",LastName:  "Smith",Age:       28,Address: Address{City:  "New York",State: "NY",},}// 访问嵌套结构体字段fmt.Println("First Name:", person.FirstName)fmt.Println("Last Name:", person.LastName)fmt.Println("Age:", person.Age)fmt.Println("City:", person.Address.City)fmt.Println("State:", person.Address.State)
}

这些是关于Go语言结构体的基本知识。结构体在Go语言中是一种强大的工具,用于组织和表示复杂的数据结构。

相关文章:

  • C#数值类型介绍及示例
  • 测试基础07:测试工作流程规范、进度同步与把控
  • PowerPivot-跨表取值
  • Python开发 —— 文件读写操作open与with open
  • C从零开始实现贪吃蛇大作战
  • aop整理
  • 从0开始带你成为Kafka消息中间件高手---第三讲
  • 100个 Unity小游戏系列五 -Unity 抽奖游戏专题三老虎机游戏
  • Android 四大组件 service
  • Firefox国际版
  • 【调试笔记-20240521-Linux-编译 QEMU/x86_64 可运行的 OpenWrt 固件】
  • Jeecg | 如何解决 ERR Client sent AUTH, but no password is set 问题
  • 前端应用开发实验:表单控件绑定
  • 什么叫USDT(泰达币)的前世今生!
  • JavaScript tab选项卡切换
  • Flannel解读
  • HTML-表单
  • HTTP中GET与POST的区别 99%的错误认识
  • VUE es6技巧写法(持续更新中~~~)
  • vue的全局变量和全局拦截请求器
  • 分类模型——Logistics Regression
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 为视图添加丝滑的水波纹
  • 最简单的无缝轮播
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • #QT(串口助手-界面)
  • #stm32整理(一)flash读写
  • #WEB前端(HTML属性)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (差分)胡桃爱原石
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三)Honghu Cloud云架构一定时调度平台
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)Android布局类型(线性布局LinearLayout)
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)Java算法:二分查找
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)ABI是什么
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)大型网站的系统架构
  • (转)一些感悟
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .net与java建立WebService再互相调用
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @Controller和@RestController的区别?
  • @JsonFormat与@DateTimeFormat注解的使用
  • [BT]BUUCTF刷题第4天(3.22)
  • [C#]C# winform实现imagecaption图像生成描述图文描述生成