Go语言之定义结构体(Struct)-《Go语言实战指南

结构体(struct)是 Go 中的一种复合数据类型,它允许你将多个不同类型的字段组合成一个类型,类似于 C 语言的结构体或面向对象语言中的类。

一、结构体的基本定义type结构体名struct{ 字段名 字段类型 ...}示例:typePersonstruct{ NamestringAgeint}

这里定义了一个 Person 类型,包含两个字段:Name 和 Age。

二、创建结构体实例

你可以用多种方式创建结构体实例。

1. 使用字面量(推荐)p := Person{Name:"Alice", Age:30}2. 指针形式(使用 &)p := &Person{Name:"Bob", Age:25}fmt.Println(p.Name)// 自动解引用,等价于 (*p).Name3. 使用 new 关键字(不推荐)p :=new(Person)p.Name ="Charlie"p.Age =22

三、访问与修改字段p := Person{Name:"Dave", Age:40}fmt.Println(p.Name)// 输出:Davep.Age =41fmt.Println(p.Age)// 输出:41

结构体字段是公开(以大写字母开头)还是私有(以小写字母开头)由字段名的首字母决定。

四、结构体的零值

结构体的零值由每个字段的零值组成:

varp Personfmt.Println(p.Name)// ""fmt.Println(p.Age)// 0

五、结构体比较(==)

结构体可以直接用 == 比较,但前提是所有字段类型也支持比较。

p1 := Person{"Tom",18}p2 := Person{"Tom",18}fmt.Println(p1 == p2)// true

如果结构体中含有 map、slice、function 等不可比较类型,则不能直接用 ==。

六、结构体嵌套(组合)typeAddressstruct{ CitystringStatestring}typeEmployeestruct{ NamestringAgeintAddress Address}

使用时:

e := Employee{ Name:"Eva", Age:30, Address: Address{ City:"Beijing", State:"China", },}fmt.Println(e.Address.City)// 输出:Beijing

七、结构体标签(Tag)

结构体字段可以带标签(如用于 JSON 编码):

typeUserstruct{ IDint`json:"id"`Namestring`json:"name"`}

配合标准库 encoding/json 可用于序列化与反序列化。

八、小结

  • 特性
  • 说明
  • 定义结构体type StructName struct {}
  • 创建实例使用字面量 {},或 new,或 &{}
  • 字段访问instance.field 或 ptr.field
  • 支持嵌套结构体内可嵌套另一个结构体作为字段
  • 支持比较仅当所有字段可比较时可使用 ==
  • 可加标签(Tag)用于 JSON、DB 映射等反射相关应用场景
特别声明:[Go语言之定义结构体(Struct)-《Go语言实战指南》] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

安徽:3姐妹回家拜年,『打扮』时髦靓丽,网友配图神评:像染色小鸡(安徽10姐妹唱歌视频)

有三名女子,是姐妹,她们在城里打工,但是到了适婚年龄,还没有结婚,不过她们每次回家,都会引起村民的骚动,尤其是媒婆,老早登门,打算帮她们介绍对象,可是当网友看到几名女子的『打扮』,都纷纷表示“这样愁嫁吗” 上身…

安徽:3姐妹回家拜年,『打扮』时髦靓丽,网友配图神评:像染色小鸡(安徽10姐妹唱歌视频)

『机器人』️工程薪资暴涨,北京邮电大学王牌专业怎么样?性价比到底有多高?(『机器人』️工程薪资一般多少)

但热闹背后,一个更现实的问题是:当所有人都想挤上这条赛道时,什么样的高校和专业,才能真正让孩子在未来的技术浪潮里站稳脚跟? 很多人对『机器人』️工程的印象还停留在“造『机器人』️”,但北邮的这个专业,从一开始就跳出了传统…

『机器人』️工程薪资暴涨,北京邮电大学王牌专业怎么样?性价比到底有多高?(『机器人』️工程薪资一般多少)

新纶『新能源』申请低温易开封铝塑膜专利,防止电池爆炸发生(新纶『新能源』申请铝塑膜专利)

国家知识产权局信息显示,新纶『新能源』材料(常州)有限公司申请一项名为“低温易开封的铝塑膜及其制备方法”的专利,公开号CN121584105A,申请日期为2025年11月。本发明的低温易开封的铝塑膜在温度达到12…

新纶『新能源』申请低温易开封铝塑膜专利,防止电池爆炸发生(新纶『新能源』申请铝塑膜专利)

诺驰机械取得模温机除垢机构专利,清理之后的固体水垢将会通过导出机构进行导出(诺晗机械)

国家知识产权局信息显示,昆山诺驰机械科技有限公司取得一项名为“一种模温机除垢机构”的专利,授权公告号CN223946421U,申请日期为2025年1月。 专利摘要显示,本实用新型公开了一种模温机除垢机构,包括…

诺驰机械取得模温机除垢机构专利,清理之后的固体水垢将会通过导出机构进行导出(诺晗机械)

纯色柜子遮挡帘,2026年如何选才不踩雷?(给柜子做个帘子)

随着2026年家居设计趋向奶油风,纯色柜子遮挡帘成为热门选择。本文教你挑选适合自家的遮挡帘,从防尘防水性能到款式设计,帮你轻松打造干净整洁的厨房空间。

纯色柜子遮挡帘,2026年如何选才不踩雷?(给柜子做个帘子)