我尝试运行以下bar.go脚本
package main
import (
"fmt"
"syscall"
)
func main() {
fmt.Printf("%d\n", uintptr(syscall.ENONET))
}
通过调用go run bar.go
并收到此错误:
# command-line-arguments
./bar.go:9:29: undefined: syscall.ENONET
我正在使用Mac,然后使用版本1.14.3 darwin/amd64
。我尝试在[https://play.golang.org/p/ecMZPsGgGOa]游乐场上运行此确切的脚本,并且有效。
我尝试使用CGO_ENABLED=1 GOOS=linux GOARCH=amd64
运行脚本,但出现此错误:
fork/exec /var/folders/2l/dj6ph5t92y17vhtv3n6xzr5r0000gn/T/go-build847134732/b001/exe/bar: exec format error
如何在Mac上使用syscall.ENONET
?
谢谢
是的,这有一些奇怪的问题。尽管syscall现在已锁定。
Deprecated: this package is locked down.
Callers should use the corresponding package in the golang.org/x/sys repository instead.
我尝试了go version go1.14.3 darwin/amd64
,但遇到了同样的问题。
但是在文档中,我们有:
ENONET = Errno(0x40)
同样,Errno也是导出类型,您可以显式模拟相同的行为:
package main
import (
"fmt"
"syscall"
)
func main() {
fmt.Printf("%d\n", syscall.Errno(0x40)) // 64
fmt.Printf("%v\n", syscall.Errno(0x40)) // host is down
}