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语言实战指南》] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

多功能小凳子:现代家庭中的舒适与便捷之选(多功能凳子的设计方案)

你是否在寻找一款既能满足日常修脚需求,又能用于足浴、放置茶杯甚至充当小马扎的产品?本文将深度解析这种多功能小凳子的特点、设计原理以及应用场景,探讨其对现代家居生活的潜在影响。 这种小凳子不仅仅是一个家具,它更是一种生活方式的体现。

多功能小凳子:现代家庭中的舒适与便捷之选(多功能凳子的设计方案)

立冬至,万物藏|名师讲节气(立冬至万物藏的唯美句子)

北风潜入悄无声,未品浓秋已立冬。11月7日,我们迎来立冬节气。 在寒风乍起的日子里,让我们怀着希望,享受冬天的静谧,静待下一个春天的到来。统筹|贾文艺 AI制作|任赫 剪辑|任赫 包装|任赫 李下惠…

立冬至,万物藏|名师讲节气(立冬至万物藏的唯美句子)

『成毅』水畔着白衣,精灵落臂弯!是谁又被淇淇美好瞬间治愈了呢

谁能想到,这样一张温馨美好的照片,竟然是在拍戏空档的间隙中捕捉到的呢?他以自己的方式去感悟众生,带着对生活的热爱和对未来的期许,也影响着我们这些与他有缘的人。 他不断挑战自己,突破每一个难关,在自己的热情…

『成毅』水畔着白衣,精灵落臂弯!是谁又被淇淇美好瞬间治愈了呢

『宋慧乔』懒得装了,挤出三分讥笑,就差冷哼一声了(『宋慧乔』装扮)

事实上,青龙奖一度是韩国电影界最具权威的奖项之一,但随着近年来『娱乐圈』️的变化,它似乎也越来越偏向娱乐化和话题性。当评委会将影帝影后双双颁给玄彬与孙艺珍,几乎是为了制造话题、吸引眼球,『宋慧乔』的态度也因此变得更具…

『宋慧乔』懒得装了,挤出三分讥笑,就差冷哼一声了(『宋慧乔』装扮)

“大保健男神”乔杉坎坷人生,以及那个“为他摆地摊”的女人

陈永通在4k综艺中表现出色,成功吸引了一批粉丝,并获得了大家的喜爱他的成功也意味着无数从事大保健的人也有了改变自己命运的机会,让大家看到了普通人的无限可能陈永通没有选择继续从事大保健行业,而是选择了以演员的…

“大保健男神”乔杉坎坷人生,以及那个“为他摆地摊”的女人