почему функцию runtime_args можно выразить так? - PullRequest
0 голосов
/ 16 ноября 2018

Этот код находится в proc.go. Я не могу понять функцию runtime_args, кто-нибудь может мне помочь? Извините за мой плохой английский.

// 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()
}

func runtime_args() []string // in package runtime

// Getuid returns the numeric user id of the caller.
//
// On Windows, it returns -1.
func Getuid() int { return syscall.Getuid() }

1 Ответ

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

Согласно Go Programming Language Specification:

Объявление функции может опускать тело.Такое объявление предоставляет подпись для функции, реализованной вне Go, такой как подпрограмма сборки.

В вашем случае эта реализация функции фактически объявлена ​​в пакете runtime

proc.go:

...
func runtime_args() []string // in package runtime
...

runtime.go:

...
//go:linkname os_runtime_args os.runtime_args
func os_runtime_args() []string { return append([]string{}, argslice...) }
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...