Почему Args инициализируется перед функцией init? - PullRequest
0 голосов
/ 16 ноября 2018

src/os/proc.go:

// Args hold the command-line arguments, starting with the program name.
var Args []string

func init() {
    if runtime.GOOS == "windows" {
        // Initialized in exec_windows.go.
        return
    }
    Args = runtime_args()
}

Когда я отлаживал здесь, я обнаружил, что Args инициализированы перед функцией init. Где это инициализировано?

1 Ответ

0 голосов
/ 16 ноября 2018

Как говорится в комментарии: // Initialized in exec_windows.go.

src/os/exec_windows.go:

func init() {
    p := syscall.GetCommandLine()
    cmd := syscall.UTF16ToString((*[0xffff]uint16)(unsafe.Pointer(p))[:])
    if len(cmd) == 0 {
        arg0, _ := Executable()
        Args = []string{arg0}
    } else {
        Args = commandLineToArgv(cmd)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...