以下是关于“Go语言基础结构体用法及示例详解”的完整攻略。
什么是结构体
在Go中,结构体是一种自定义数据类型,结构体中可以包含多个不同类型的字段,相当于Java中的Class或者C++中的结构体。
结构体的定义方式如下:
type 结构体名 struct {
字段1 数据类型1
字段2 数据类型2
...
}
例如:
type Person struct {
name string // 名字
age int // 年龄
gender string // 性别
}
结构体的使用
定义好结构体之后,可以使用new关键字来创建结构体的实例。访问结构体的字段时,可以使用 "." 来访问,例如:
person := new(Person)
// 实例化结构体,并赋初值
person.name = "张三"
person.age = 25
person.gender = "男"
还可以用字面量来初始化结构体,例如:
person := Person{name: "张三", age: 25, gender: "男"}
结构体示例
以下是两个关于结构体的示例:
示例1:一个简单的双精度浮点数向量
type Vector struct {
X, Y, Z float64
}
func (v *Vector) Multiply(s float64) {
v.X *= s
v.Y *= s
v.Z *= s
}
// 在main函数中使用向量结构体
func main() {
v := Vector{1.0, 2.0, 3.0}
v.Multiply(2)
fmt.Println(v)
}
在上面的代码中,我们定义了一个结构体Vector,这个结构体包含了三个float64类型的字段:X,Y,Z。然后我们为Vector结构体定义了一个方法Multiply,这个方法用来将向量的每个元素乘以一个给定的浮点数。最后在main函数中,我们创建了一个叫做v的向量,调用了它的Multiply方法,并打印出来。
示例2:一个简单的人员信息管理系统
type Person struct {
name string
age int
gender string
}
type People struct {
people []Person
}
func (p *People) AddPerson(person Person) {
p.people = append(p.people, person)
}
func (p *People) GetPeople(name string) []Person {
var result []Person
for _, person := range p.people {
if strings.EqualFold(person.name, name) {
result = append(result, person)
}
}
return result
}
func main() {
people := People{}
people.AddPerson(Person{"张三", 23, "男"})
people.AddPerson(Person{"李四", 25, "女"})
fmt.Println(people.GetPeople("张三"))
}
在上面的代码中,我们定义了两个结构体,一个是Person,包含三个字段(name,age,gender),另一个是People,包含一个人员列表。People结构体定义了两个方法,一个是AddPerson,用来添加一个新的人员,另一个是GetPeople,用来根据name获取一个人员信息。在main函数中,我们创建了一个People实例,添加了两个人员信息,并打印出来了名字叫做“张三”的人员信息。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Go语言基础结构体用法及示例详解 - Python技术站