Где мое значение после выполнения Golang Init
package main
import (
"fmt"
"os"
)
var http_endpoint string
func init() {
http_endpoint, ok := os.LookupEnv("http_endpoint")
fmt.Println("OK IS:", ok)
if !ok {
http_endpoint = "127.0.0.1:3000"
}
fmt.Println("INIT RESULT:", http_endpoint)
}
func main() {
fmt.Println("FINAL RESULT:", http_endpoint)
}
/* OUTPUT:
OK IS: false
INIT RESULT: 127.0.0.1:3000
FINAL RESULT:
*/
package main
import (
"fmt"
)
var http_endpoint string
func init() {
http_endpoint = "127.0.0.1:3000"
fmt.Println("INIT RESULT:", http_endpoint)
}
func main() {
fmt.Println("FINAL RESULT:", http_endpoint)
}
/* OUTPUT
INIT RESULT: 127.0.0.1:3000
FINAL RESULT: 127.0.0.1:3000
*/
Where my value after init?
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Вот оно, зло затенения (англ. «shadowing»). Вот тут вы создали локальную переменную, а не записали в глобальную:
http_endpoint, ok := os.LookupEnv("http_endpoint")
Пишите вот так:
var ok book
http_endpoint, ok = os.LookupEnv("http_endpoint")