如何在Go中检测操作系统版本

相对较新。似乎微不足道,但我不知道如何检测操作系统版本。我知道我可以使用runtime.GOOSruntime.GOARCH获得平台和体系结构,但是说我知道我在linux上,但是我想确定我是否在RH6上,而在RH7上,等等。

回答:

因此,至少在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上起作用。尚未测试其他系统。

以上是 如何在Go中检测操作系统版本 的全部内容, 来源链接: utcz.com/qa/419169.html

回到顶部