使用golang编程获取macOS版本



我想在golang中获取macOS版本。基本想检查一下macOS是不是>= Big Sur.

找到goInfo包。但它没有提供所需的细节。尝试syscall包,但解决方案仅在Linux上有效。

任何帮助都是感激的。

使用unix。取消名称以获得达尔文的发布版本。根据达尔文的发布历史,大苏尔对应的达尔文版本为20.x.x

请看下面的演示:

package main
import (
"fmt"
"strconv"
"strings"
"golang.org/x/sys/unix"
)
func main() {
var uts unix.Utsname
if err := unix.Uname(&uts); err != nil {
panic(err)
}
sysname := unix.ByteSliceToString(uts.Sysname[:])
release := unix.ByteSliceToString(uts.Release[:])
fmt.Printf("sysname: %snrelease: %sn", sysname, release)
if sysname == "Darwin" {
dotPos := strings.Index(release, ".")
if dotPos == -1 {
fmt.Printf("invalid release value: %sn", release)
return
}
major := release[:dotPos]
majorVersion, err := strconv.Atoi(major)
if err != nil {
fmt.Printf("invalid release value: %s, %vn", release, err)
return
}
fmt.Println("macOS >= Big Sur:", majorVersion >= 20)
}
}

我的电脑输出:

sysname: Darwin
release: 22.3.0
macOS >= Big Sur: true

参考:https://github.com/golang/go/blob/release-branch.go1.20/src/cmd/internal/osinfo/os_unix.go

最新更新