美文网首页
十一.Go方法method

十一.Go方法method

作者: kaxi4it | 来源:发表于2017-06-22 23:41 被阅读0次

    方法method

    • Go中虽没有class,但依然有method
    • 通过显示说明receiver来实现与某个类型的组合 ??
    • 只能为同一个包中的类型定义方法
    • Receiver可以是类型的值或者指针
    • 不存在方法重载
    • 可以使用值或指针来调用方法,编译器会自动完成转换
    • 从某种意义上来说,方法是函数的语法糖,因为receiver其实是方法所接受的第一个参数
    • 如果外部结构和嵌入结构存在同名方法,则优先调用外部结构的方法
    • 类型别名不会拥有底层类型所附带的方法
    • 方法可以调用结构中的非公开字段
    package main
    import (
        "fmt"
    )
    type A struct {
        Name string
    }
    type B struct {
        Name string
    }
    type C int
    type D struct {
        name string
    }
    func main() {
        a := A{}
        a.Show()
        b := B{}
        b.Show()
        var c C
        c.Show()
        (*C).Show(&c)
        d := D{}
        d.Show()
        fmt.Println(d.name)
    }
    func (a A) Show() {
        fmt.Println("A")
    }
    func (b B) Show() {
        fmt.Println("B")
    }
    func (c *C) Show() {
        fmt.Println("C")
    }
    func (d *D) Show() {
        d.name = "ddd"
        fmt.Println(d.name)
    }
    

    直通车

    相关文章

      网友评论

          本文标题:十一.Go方法method

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