2017-09-21 4 views
4

次のように定数を宣言すると、 'const initializer in os.Getenv( " MY_SECRET ")は定数ではありません。どうしてこれなの?os.Getenvを使用してgolangの定数を宣言すると、 'const initializer in os.Getenv( "MY_SECRET")が定数ではありません。'

新機能Getenvの戻り値の型が文字列であることがわかりますが、なぜこれが定数として機能しないのかわかりません。

const (
    secret  = os.Getenv("MY_SECRET") 
    key  = os.Getenv("MY_KEY") 
) 

答えて

5

エラーと同じように、constant must have a constant valueと表示されます。関数の戻り値に設定することはできません。 は、コンパイル時に評価する必要があります(例:文字列リテラル)。実行時に参照される環境変数の値を格納する場合は、定数ではなく変数に格納する必要があります。

+0

コンパイル時には何かがあったと思っていました。ありがとうございました。私が以前に尋ねたことのない正当な質問をS.O. – Michael

+1

いくつかの先行技術があります(例:https://stackoverflow.com/questions/37976076/)。 – Adrian

関連する問題