为什么函数runtime_args可以这样表示?

时间:2018-11-16 02:54:20

标签: go

此代码在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 :(得分:1)

根据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...) }
...