【发布时间】:2020-04-30 15:40:28
【问题描述】:
如果我有一个将引用作为参数的函数,并且我想使用该函数来初始化一个变量,我需要在 init() 函数中执行此操作。该解决方案有效,但我闻起来并不正确。
是否有另一种方法可以使用 init() 函数为 go 中的包初始化变量?
我认为一定有更好的方法。我已经考虑过包装函数,但这使得逻辑并不好。
我准备了一个简短的例子 主包
import (
"fmt"
)
var a string
//A use of a function is not allowed
//foo(&a)
//Need to call init
func init() {
foo(&a)
}
func main() {
fmt.Println(a)
}
func foo(b *string) {
*b = "abc"
}
【问题讨论】:
-
我知道这是一个玩具示例。但是我仍然觉得这里使用一个预先声明的标识符(例如
make)作为函数的名称有点令人困惑。 -
你是对的。我会改变这个问题。
-
经过几年的 Go 编码,我认为
init()的使用不是很习惯,应该避免使用。
标签: go