登录
首页 >  Golang >  Go问答

适用于结构体字段或结构体方法

来源:stackoverflow

时间:2024-03-01 20:09:24 490浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《适用于结构体字段或结构体方法》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

有人可以帮助我澄清在哪些情况下最好使用函数作为结构体字段以及何时作为结构体方法?


解决方案


函数类型的字段不是方法,因此它不是结构类型 method set 的一部分。使用结构类型声明为接收者的“true”方法将成为方法集的一部分。

话虽这么说,如果你想实现一个接口,你别无选择,只能定义“真正的”方法。

方法“附加”到具体类型,并且不能在运行时更改。函数类型的字段可以用来“模仿”虚拟方法,但如上所述,这不是方法。函数类型的字段可以在运行时重新分配。

就像这个例子:

type foo struct {
    bar func()
}

func main() {
    f := foo{
        bar: func() { fmt.println("initial") },
    }
    f.bar()

    f.bar = func() { fmt.println("changed") }
    f.bar()
}

哪个输出(在 Go Playground 上尝试一下):

initial
changed

函数类型的字段常用于存储回调函数。标准库中的示例为 http.Serverhttp.Transport

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《适用于结构体字段或结构体方法》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>