因此,至少在Linux上,软件包中确实存在这种晦涩的
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上起作用。尚未测试其他系统。



