您的位置:首页 > 编程语言 > Go语言

【GoLang】GoLang struct 使用

2016-11-25 11:20 134 查看
代码示例:

package main

import "fmt"

type Human struct {
name   string
age    int
weight int
}

type Student struct {
Human      // 匿名字段,那么默认Student就包含了Human的所有字段
speciality string
}

func main() {
// 我们初始化一个学生
mark := Student{Human{"Mark", 25, 120}, "Computer Science"}

// 我们访问相应的字段
fmt.Println("His name is ", mark.name)
fmt.Println("His age is ", mark.age)
fmt.Println("His weight is ", mark.weight)
fmt.Println("His speciality is ", mark.speciality)
// 修改对应的备注信息
mark.speciality = "AI"
fmt.Println("Mark changed his speciality")
fmt.Println("His speciality is ", mark.speciality)
// 修改他的年龄信息
fmt.Println("Mark become old")
mark.age = 46
fmt.Println("His age is", mark.age)
// 修改他的体重信息
fmt.Println("Mark is not an athlet anymore")
mark.weight += 60
fmt.Println("His weight is", mark.weight)

mark.Human = Human{"aaa", 20, 123}
mark.Human.age += 10
fmt.Println(mark)
}




004.struct类型

1 type声明新类型

1.1 type testInt func(int) bool // 声明了一个函数类型

1.2 type person struct //声明一个结构体类型

1.3 struct与array一样是值类型,作为参数会copy完整数据; slice、map、channel等传递的是数据的内存地址

2 初始化

2.1 顺序初始化

2.1.1 var p Person = Person{"aaa", 123}

2.2 指定参数初始化

2.2.1 p = Person{name: "test", age: 456}

2.3 new指针初始化

2.3.1 var pp *Person = new(Person)

3 匿名访问

3.1 组合关系的struct可以直接通过被继承字段访问

3.2 也可以通过struct名称访问

3.3 struct不仅仅能够将struct作为匿名字段、自定义类型、内置类型都可以作为匿名字段, 而且可以在相应的字段上面进行函数操作

3.4 允许我们去重载通过匿名字段继承的一些字段, 当然如果我们想访问重载后对应匿名类型里面的字段,可以通过匿名字段名来访问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: