2017-09-21 6 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