赞
踩
Go中类的封装
形式 Func (实例 结构体名)函数名(参数)返回值{}
Go中的类即为struct
代码示例:
- package main
-
- import "fmt"
-
- //Person类
- type Person struct {
- //成员属性
- name string
- age int
- score float32
- }
-
- //方法,绑定到类上
- func (P1 Person) test1() {
- fmt.Println("姓名:", P1.name)
- fmt.Println("年龄:", P1.age)
- fmt.Println("得分:", P1.score)
- }
-
- /*
- 指针绑定和普通绑定的区别
- */
- //普通绑定
- func (P2 Person) test2() {
- P2.name = "test2"
- }
-
- //指针绑定
- func (P3 *Person) test3() {
- P3.name = "test3"
- }
-
- func main() {
- //创建实例
- person1 := Person{
- name: "小明",
- age: 20,
- score: 99.0,
- }
- person2 := person1
-
- //测试绑定方法
- person1.test1()
- /*
- 测试指针绑定和普通绑定的区别
- */
- fmt.Println("---------------------")
- fmt.Println("普通绑定")
- fmt.Println("姓名修改前")
- fmt.Println("姓名:", person1.name)
- person1.test2()
- fmt.Println("姓名修改后")
- fmt.Println("姓名:", person1.name)
- fmt.Println("---------------------")
- fmt.Println("指针绑定")
- fmt.Println("姓名修改前")
- fmt.Println("姓名:", person2.name)
- fmt.Println("姓名修改后")
- person2.test3()
- fmt.Println("姓名:", person2.name)
- fmt.Println("---------------------")
- }

运行结果:

Go中的嵌套与继承
结构体中包含另一个结构体,表示嵌套。
结构体中直接包含结构体名,表示继承该结构体。将其变量和方法均继承过来。
继承时虽然没有定义字段名,但是会自动创建一个默认的同名字段。为了在子类中依然可以操作父类,因为子类父类可能出现同名字段。
代码示例:
- package main
-
- import "fmt"
-
- //定义一个类
- type Human struct {
- name string
- age int
- }
-
- //父类方法
- func (H Human) test1() {
- fmt.Println("父类的方法")
- }
-
- //嵌套
- type Student struct {
- H Human
- score float32
- }
-
- //继承
- type Teacher struct {
- Human
- gender string
- }
-
- func main() {
-
- //嵌套
- student := Student{
- H: Human{
- name: "小明",
- age: 20,
- },
- score: 99.0,
- }
- fmt.Println("嵌套定义的实例信息:")
- fmt.Println(student)
-
- //继承
- teacher := Teacher{}
- teacher.name = "王老师"
- teacher.age = 40
- teacher.gender = "男"
- fmt.Println("继承定义的信息:")
- fmt.Println(teacher)
- //子类调用父类方法
- teacher.test1()
-
- }

运行结果:

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。