在golang中通过引用初始化函数上的变量

在golang中通过引用初始化函数上的变量,go,Go,如果我有一个以引用为参数的函数,并且我想使用该函数初始化一个变量,那么我需要在init()函数中执行此操作。这个解决方案是有效的,但我觉得不太对劲 是否有其他方法可以使用init()函数为go中的包初始化变量 我认为一定有更好的办法。我已经考虑过包装函数,但这并没有使logik更好 我准备了一个简短的例子 包干管 import ( "fmt" ) var a string //A use of a function is not allowed //foo(&a) //Ne

如果我有一个以引用为参数的函数,并且我想使用该函数初始化一个变量,那么我需要在init()函数中执行此操作。这个解决方案是有效的,但我觉得不太对劲

是否有其他方法可以使用init()函数为go中的包初始化变量

我认为一定有更好的办法。我已经考虑过包装函数,但这并没有使logik更好

我准备了一个简短的例子 包干管

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()
不是很习惯,应该避免使用。