XuLaLa.Tech

首页客户端下载Windows 使用V2Ray 教程SSR 教程Clash 教程

Golang 如何获取操作系统版本?

2025.04.09

在开发跨平台应用程序时,获取操作系统的版本信息是一个常见需求。Golang 提供了强大的标准库和灵活的扩展能力,可以帮助开发者轻松实现这一功能。使用Golang获取操作系统版本信息的完整指南,包括runtime包、系统命令和第三方库gopsutil方法,轻松实现跨平台版本检测。

文章目录

  • 1 一、使用 runtime 包获取基本信息
    • 1.1 示例:
  • 2 二、使用 os/exec 执行系统命令
    • 2.1 I. 在 Linux 上获取版本信息
    • 2.2 II. 在 Windows 上获取版本信息
    • 2.3 III. 在 macOS 上获取版本信息
  • 3 三、使用第三方库
    • 3.1 安装 gopsutil
    • 3.2 代码:
    • 3.3 示例:
  • 4 四、总结

一、使用 runtime 包获取基本信息

Golang 的 runtime 包提供了一些关于运行时环境的信息,例如操作系统名称和架构。可以通过以下代码获取操作系统的基本信息:
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Println("操作系统:", runtime.GOOS)
fmt.Println("架构:", runtime.GOARCH)
}

示例:

在 Windows 上运行:

操作系统: windows
架构: amd64
虽然 runtime.GOOS 提供了操作系统名称,但并没有具体的版本号,因此需要借助其他方法获取更详细的信息。

二、使用 os/exec 执行系统命令

通过执行系统命令,可以获取更详细的操作系统版本信息。

I. 在 Linux 上获取版本信息

Linux 系统的版本信息通常存储在 /etc/os-release 或通过 uname -a 获取。

示例代码:

package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("uname", "-a")
output, err := cmd.Output()
if err != nil {
fmt.Println("获取版本信息失败:", err)
return
}
fmt.Println("Linux 系统版本信息:", string(output))
}

II. 在 Windows 上获取版本信息

在 Windows 系统中,可以通过 cmd 执行 ver 命令获取版本信息。

示例代码:

package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("cmd", "/C", "ver")
output, err := cmd.Output()
if err != nil {
fmt.Println("获取版本信息失败:", err)
return
}
fmt.Println("Windows 系统版本信息:", string(output))
}

III. 在 macOS 上获取版本信息

macOS 系统可以使用 sw_vers 命令获取详细信息。

示例代码:

package main
import (
"fmt"
"os/exec"
)
func main() {
cmd := exec.Command("sw_vers")
output, err := cmd.Output()
if err != nil {
fmt.Println("获取版本信息失败:", err)
return
}
fmt.Println("macOS 系统版本信息:\n", string(output))
}

三、使用第三方库

如果需要跨平台支持,可以使用第三方库如 github.com/shirou/gopsutil。该库提供了统一的 API 来获取操作系统的详细信息。

安装 gopsutil

运行以下命令安装库:

go get -u github.com/shirou/gopsutil/host

代码:

package main
import (
"fmt"
"github.com/shirou/gopsutil/host"
)
func main() {
info, err := host.Info()
if err != nil {
fmt.Println("获取系统信息失败:", err)
return
}
fmt.Println("操作系统:", info.OS)
fmt.Println("平台:", info.Platform)
fmt.Println("平台版本:", info.PlatformVersion)
fmt.Println("内核版本:", info.KernelVersion)
fmt.Println("架构:", info.KernelArch)
}

示例:

在 Linux 系统上:

操作系统: linux
平台: ubuntu
平台版本: 20.04
内核版本: 5.4.0-91-generic
架构: x86_64

四、总结

获取操作系统版本信息的方法主要包括:

  1. 使用 runtime 包获取基础信息;
  2. 使用 os/exec 调用系统命令获取详细版本信息;
  3. 使用第三方库如 gopsutil 提供跨平台的解决方案。
根据项目的需求,可以选择最合适的方法。对于简单场景,runtimeos/exec 就足够;而在复杂场景中,gopsutil 提供了更全面的支持。
© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB