系统调用变量未定义。

11

尝试在我的 Mac 上构建以下程序时,我遇到了构建错误:undefined: syscall.TCPInfo,即使该变量已经在http://golang.org/pkg/syscall/#TCPInfo中有明确的文档说明。

package main

import "syscall"

func main() {
    _ = syscall.TCPInfo{}
}

这是我的 Go 工具版本。

$ go version
go version go1.3 darwin/amd64

我认为这可能是由于操作系统不支持而导致的问题,所以我在http://play.golang.org上尝试了一下,但看起来syscall包中的许多记录变量都随机地丢失了:http://play.golang.org/p/w3Uk6NaZVy

我有什么遗漏吗?


syscall包是平台相关的。在线文档仅显示Linux版本。 - JimB
并且 play.golang.org 上的 GOOS 也不是 Linux 系统,而是在 nacl 下运行。 - JimB
啊,是的,就这样了。谢谢。 - eric chiang
1个回答

10

在syscall中指定的变量取决于操作系统。

您可以向文件添加后缀以指定应为哪个操作系统构建它们:

// +build linux,386 darwin,!cgo

因此,您可以针对每个操作系统使用特定的syscall标志。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接