Go语言中的receiver function

2021-06-21  本文已影响0人  louyang

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
上一篇下一篇

猜你喜欢

热点阅读