美文网首页
Go语言中的receiver function

Go语言中的receiver function

作者: louyang | 来源:发表于2021-06-21 14:50 被阅读0次

    Go语言是不用类和继承的,原因应该是其太复杂了。

    在面向对象编程中,用来将数据和函数绑在一起,例如:

    Person
    +---------------------------------------------+
    | Name: String                                |   <- data
    | Age: Int                                    |
    +---------------------------------------------+
    | SayHello()                                  |   <- function
    +---------------------------------------------+
    

    在Go语言中,我们也可以实现上述的绑定,但不是类,而是receiver function

    首先,我们定义数据结构:

    type person struct {
        name string
        age int
    }
    

    参考

    https://www.bogotobogo.com/GoLang/GoLang_Structs.php
    https://appdividend.com/2019/03/23/golang-receiver-function-tutorial-go-function-receivers-example/
    https://grisha.org/blog/2016/09/22/golang-receiver-vs-function/

    然后,完成数据结构与函数的绑定:

    func (p person) SayHello() {  // Function SayHello() can receive person type variable
        log.Print("Hello ", p.name)
    }
    

    最后,创造变量并调用receiver function

    p := person{"Peter",18}
    p.SayHello();
    

    完整代码:

    package main
    
    import (
        "log"
    )
    
    type person struct {
        name string
        age int
    }
    
    func (p person) SayHello() {
        log.Print("Hello ", p.name)
    }
    
    func main() {
        p := person{"Peter",18}
        p.SayHello();
    }
    

    运行结果:

    2021/06/21 09:48:46 Hello Peter
    

    相关文章

      网友评论

          本文标题:Go语言中的receiver function

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