2

Macでgolang 1.4.2を使用しています

Unameを使用して情報を取得したいのですが、コードは次のとおりです。

package main

import (
  "syscall"
)

func main() {
  utsname := syscall.Utsname{}
  syscall.Uname(&utsname)
}

しかし、これらのエラーが発生しました:

# command-line-arguments
./main.go:8: undefined: syscall.Utsname
./main.go:9: undefined: syscall.Uname

何か問題がありましたか?

4

2 に答える 2

8

TL;DR UnameUtsnameあり、OSX では使用できません。

その理由は、これらの関数がオペレーティング システム用に定義されていないためです。

これに関するドキュメントを読むと、syscall私は飛びつきました:

詳細は基礎となるシステムによって異なり、デフォルトでは、godoc は現在のシステムの syscall ドキュメントを表示します。godoc に別のシステムの syscall ドキュメントを表示させたい場合は、$GOOS と $GOARCH を目的のシステムに設定します。

godoc syscall私の Mac で実行すると、型も関数呼び出しもsycall含まれていないドキュメントが作成されました。UtsnameUname

ただし、実行すると、GOOS=linux GOARCH=amd64 godoc syscall実際にはUtsnameとが表示されUnameます。

また、OS固有のパッケージを優先して、パッケージ自体がロックダウンされていることに注意してください

https://golang.org/pkg/syscall/ => https://godoc.org/golang.org/x/sys

于 2015-04-02T15:54:35.337 に答える