一、匿名结构体
在Go语言中,匿名结构体和匿名成员(字段)提供了非常灵活的方式来处理数据。
1、匿名函数应用场景
快速使用一个类型,构造一个实例,只调用一回,没有名称只能调用一次。
2、定义匿名结构体
package mainimport "fmt"func main() {server := struct {id intsn stringip string}{id: 1024, sn: "E9527", ip: "192.168.101.100"}//fmt.Println(server)fmt.Println(server.id, server.sn, server.ip)
}
- 使用场景:临时数据存储、快速开发原型、函数返回类型等。
- 优点:简洁、灵活。
- 缺点:不可复用、可读性差、扩展困难。
二、匿名成员(字段)
匿名成员是结构体字段没有名字的成员,它们是通过嵌入其他结构体或类型来实现的。
package mainimport "fmt"type Address struct {City string
}type Person struct {Name stringAge intAddress // 匿名成员,类型嵌入
}func main() {person := Person{Name: "ops-9527",Age: 22,Address: Address{City: "北京",},}fmt.Println(person)fmt.Println(person.Name, person.Age, person.City)}
打印结果
ops-9527 22 北京
希望通过嵌入一个结构体来避免多次重复字段名,匿名成员能让你更简洁地访问嵌入结构体的字段。
- 使用场景:组合关系、简化代码、模拟继承等。
- 优点:简洁、可组合、模拟继承。
- 缺点:容易冲突、可读性差、不适用于所有场景。