Область видимости переменной в Голанге - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь запустить одну функцию в golang, но я получаю некоторые ошибки.Может кто-нибудь, пожалуйста, помогите.

func exportVal(name string, value string){
    var ops = isWindows()
    if ops == true{
        set name=value
        fmt.Printf("name=")

    }else{
        export name=value
        fmt.Printf("name=")
   }
}

Но я получаю ниже ошибки.

D:\Go>go run octa.go
# command-line-arguments
.\octa.go:42:10: syntax error: unexpected name at end of statement
.\octa.go:46:13: syntax error: unexpected name at end of statement

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

set и export не являются ключевыми словами Go .Может быть, вы думаете о раковине?Похоже, вы пытаетесь установить и экспортировать переменные среды.

Невозможно экспортировать переменные среды из одного процесса в другой.Вы можете изменить только среду своего собственного процесса.Дочерние процессы наследуют среду родителя, но вы не можете пойти другим путем.Вы можете сделать это только в программе оболочки, потому что эта «программа» на самом деле является набором команд для самой оболочки, и только тогда, когда используется source something.sh.sh something.sh, напротив, запускается в новом процессе оболочки.

Если вы хотите «экспортировать» данные из программы без оболочки, вам придется распечатать данные в каком-либо формате, JSON - хороший выбор, и его следует прочитать другому процессу.

0 голосов
/ 23 сентября 2018

Go не поддерживает ключевое слово export.

Вы пытаетесь создать переменную с глобальной областью действия?

var foo string

func SetFoo(to string) {
    foo = to
}

Или вы пытаетесь установить переменную среды?В этом случае используйте os.Setenv(key, value).

...