美文网首页
go结构体3期:方法重写与就近原则

go结构体3期:方法重写与就近原则

作者: 没我找不到电子书 | 来源:发表于2018-07-15 21:17 被阅读0次
package main

import "fmt"

type Person struct {
    name string //名字
    sex  byte   //性别, 字符类型
    age  int    //年龄
}

//Person类型,实现了一个方法
func (tmp *Person) PrintInfo() {
    fmt.Printf("name=%s, sex=%c, age=%d\n", tmp.name, tmp.sex, tmp.age)
}

//有个学生,继承Person字段,成员和方法都继承了
type Student struct {
    Person //匿名字段
    id     int
    addr   string
}

//Student也实现了一个方法,这个方法和Person方法同名,这种方法叫重写
func (tmp *Student) PrintInfo() {
    fmt.Println("Student: tmp = ", tmp)
}

func main() {
    s := Student{Person{"mike", 'm', 18}, 666, "bj"}
    //就近原则:先找本作用域的方法,找不到再用继承的方法
    s.PrintInfo() //到底调用的是Person, 还是Student, 结论是Student

    //显式调用继承的方法
    s.Person.PrintInfo()
}

相关文章

  • go结构体3期:方法重写与就近原则

  • 17 Golang结构体详解(三)

    一、结构体嵌套 demo1 嵌套匿名结构体 关于嵌套结构体的字段名冲突(就近原则) 当两个子结构同级、就近原则不法...

  • go 结构体与方法

    go 结构体相当于 python 中类的概念,结构体用来定义复杂的数据结构,存储很多相同的字段属性 结构体的定义 ...

  • 第04天(面对对象编程)_02

    05_结构体指针类型匿名字段.go 06_面向过程和对象函数的区别.go 07_为结构体类型添加方法.go 08_...

  • Swift中static和class的区别

    static 可以修饰属性和方法,但是修饰的属性和方法不能被重写。修饰的方法叫静态方法,不能被重写可以在类、结构体...

  • 使用Golang完成的第一个项目

    Go语言和PHP的区别(Go语言特色) 没有类的概念,可以用结构体替代。给结构体定义变量,声明方法。 两个特殊的方...

  • Go结构体、方法、接口

    1 结构体 Go语言中没有“类”的概念,也不支持像继承这种面向对象的概念。但是Go语言的结构体与“类”都是复合结构...

  • <>

    结构体及其使用方法 结构体的定义 Go语言用嵌入式字段实现了继承吗?? GO语言不存在所谓的继承,只有组合。组合和...

  • 《Go语言四十二章经》第十八章 Struct 结构体

    《Go语言四十二章经》第十八章 Struct 结构体 作者:李骁 18.1结构体(struct) Go 通过结构体...

  • go结构体和方法

    struct为何物 go中的struct可以实现oop中的类、方法。go语言中的struct成员可以是任何类型,如...

网友评论

      本文标题:go结构体3期:方法重写与就近原则

      本文链接:https://www.haomeiwen.com/subject/ruhmpftx.html