相对较新。似乎微不足道,但我不知道如何检测操作系统版本。我知道我可以使用runtime.GOOS并runtime.GOARCH获得平台和体系结构,但是说我知道我在linux上,但是我想确定我是否在RH6上,而在RH7上,等等。
runtime.GOOS
runtime.GOARCH
因此,至少在Linux上,软件包中确实存在这种晦涩的Uname方法syscall。它填充的结构有点笨拙,没有文档说明,但是您可以了解它的要点:
Uname
syscall
import ( "fmt" "syscall" ) // A utility to convert the values to proper strings. func int8ToStr(arr []int8) string { b := make([]byte, 0, len(arr)) for _, v := range arr { if v == 0x00 { break } b = append(b, byte(v)) } return string(b) } func main() { var uname syscall.Utsname if err := syscall.Uname(&uname); err == nil { // extract members: // type Utsname struct { // Sysname [65]int8 // Nodename [65]int8 // Release [65]int8 // Version [65]int8 // Machine [65]int8 // Domainname [65]int8 // } fmt.Println(int8ToStr(uname.Sysname[:]), int8ToStr(uname.Release[:]), int8ToStr(uname.Version[:])) } }
顺便说一句,这在操场上不起作用,可能是由于沙箱的限制,但是在Linux上起作用。尚未测试其他系统。