在golang中通过引用初始化函数上的变量
如果我有一个以引用为参数的函数,并且我想使用该函数初始化一个变量,那么我需要在init()函数中执行此操作。这个解决方案是有效的,但我觉得不太对劲 是否有其他方法可以使用init()函数为go中的包初始化变量 我认为一定有更好的办法。我已经考虑过包装函数,但这并没有使logik更好 我准备了一个简短的例子 包干管在golang中通过引用初始化函数上的变量,go,Go,如果我有一个以引用为参数的函数,并且我想使用该函数初始化一个变量,那么我需要在init()函数中执行此操作。这个解决方案是有效的,但我觉得不太对劲 是否有其他方法可以使用init()函数为go中的包初始化变量 我认为一定有更好的办法。我已经考虑过包装函数,但这并没有使logik更好 我准备了一个简短的例子 包干管 import ( "fmt" ) var a string //A use of a function is not allowed //foo(&a) //Ne
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"
}
这很好,或者您可以创建一个指针,然后按如下方式分配它:
var a = make("abc")
func main() {
fmt.Println(*a)
}
func make(s string) *string {
return &s
}
我知道这是一个玩具的例子。但我仍然发现,这里使用预先声明的标识符(如
make
)作为函数名有点令人困惑。你是对的。我将改变这个问题。在Go中编写了几年代码之后,我认为使用init()
不是很习惯,应该避免使用。