gpt4 book ai didi

功能覆盖

转载 作者:IT王子 更新时间:2023-10-29 01:33:34 26 4
gpt4 key购买 nike

我在 Go 中发现了一些有趣的东西。假设我的包名为 mypkg,在 mypkg 中,我有两个函数:

package mypkg
func MyFunc0(){
//...
}
var MyFunc1 = func(){
//...
}

现在在我的 main 包中,可以覆盖 MyFunc1,如下所示:

mypkg.MyFunc1 = func(){
// new logic
}

但是,不可能以相同的方式覆盖 MyFunc0。那么现在提出一个问题。两种声明函数的方式有什么区别?这种行为差异是故意的吗?

最佳答案

MyFunc0 是函数声明 ( https://golang.org/ref/spec#Function_declarations )

MyFunc1 不是函数声明。它是 func 类型的变量 ( https://golang.org/ref/spec#Variable_declarations )(参见 https://golang.org/ref/spec#Function_typeshttps://golang.org/ref/spec#Function_literals )。它有一个初始值,但可以更改为包含不同的值/函数(只要函数签名匹配)。

关于功能覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30502933/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com