卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章64334本站已运行4115

使用 golang 以编程方式获取 macOS 版本

使用 golang 以编程方式获取 macos 版本

php小编香蕉教你如何使用golang编程获取macOS版本。无论是开发macOS应用程序还是进行系统管理,了解当前操作系统的版本是非常重要的。使用golang编程,我们可以轻松获取macOS的版本信息。本文将介绍如何使用golang编写代码来获取macOS版本,以及如何在终端上运行代码来查看结果。让我们一起来探索这个有趣且实用的主题吧!

问题内容

我想在 golang 中获取 macOS 版本。 主要是想检查 macOS 是否是 >= Big Sur。

找到 goInfo 包。但它没有提供所需的详细信息。 尝试了 syscall 包,但该解决方案仅适用于 Linux。

感谢任何帮助。

解决方法

使用 unix.uname 来获取 darwin 的发行版。根据darwin的发布历史,对应的big sur的darwin版本是 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://www.php.cn/link/ec47951a847319d0dd4933431b5b2c0f

卓越飞翔博客
上一篇: 也许是 golang 中的 bag(类型字符串和字符串不匹配)
下一篇: exec.Command + PATH 的可执行解析
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏