2015-04-02 76 views
1

我使用golang 1.4.2在Mac不能由golang

我想用Uname得到一些信息得到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 

是否有問題?

+1

它看起來並不像你做錯了什麼。你可以通過運行'go version'來確保你的Go版本是1.4.2嗎? – fuz 2015-04-02 14:52:02

+1

也檢查'go env',確保GOARCH和GOOS正確。 – JimB 2015-04-02 14:53:48

+0

我通過'go version'獲得'go version go1.4.2 darwin/amd64' – waitingkuo 2015-04-02 14:55:12

回答

6

TL; DRUnameUtsname不適用於OSX。

原因是因爲這些函數沒有爲操作系統定義。

閱讀syscall文檔此躍升我:

的細節取決於底層系統上有所不同,默認情況下,godoc會顯示當前系統中的系統調用文檔。如果您希望godoc顯示另一個系統的系統調用文檔,請將$ GOOS和$ GOARCH設置爲所需的系統。

運行在我的Mac godoc syscall產生的sycall文檔不包括Utsname類型也不是Uname函數調用。

但是,運行GOOS=linux GOARCH=amd64 godoc syscall實際上顯示的是UtsnameUname

另外,還要注意包裝本身是有利於OS特定軟件包的鎖定

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

+0

謝謝,我會看看'https:// godoc.org/golang.org/x/sys' – waitingkuo 2015-04-03 04:30:18