2016-05-12 6 views
0

引数として参照をとり、その関数を使って変数を初期化するには、init()関数の中でこれを行う必要があります。その解決策は動作しますが、それは私には本当に正しいとは限りません。golangの関数で変数を初期化する

init()関数のように、パッケージの変数を初期化する別の方法はありますか?

もっと良い方法があるはずです。私はすでにラップ関数について考えましたが、それはlogikを良くしません。

は、私は大丈夫です

import (
    "fmt" 
) 

var a string 
//A use of a function is not allowed 
//make(&a) 


//Need to call init 
func init() { 
    make(&a) 
} 

func main() { 
    fmt.Println(a) 
} 

func make(b *string) { 
    *b = "abc" 
} 

https://play.golang.org/p/8vjZw7cxVz

答えて

1

メイン短くて単純な例 パッケージを用意し、またはあなただけのポインタを作成し、このようにそれを割り当てることができます。

var a = make("abc") 

func main() { 
    fmt.Println(*a) 
} 

func make(s string) *string { 
    return &s 
} 

playground