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

时间:2015-05-25 06:09:08

标签: linux windows macos go

我目前正在编写REST API客户端,并且我试图确定用户正在使用哪种操作系统来生成有用的用户代理字符串。这将允许我(希望)做出关于我将来应该支持哪些操作系统做出正确决定。

我想做的是:生成一个类似于:

的字符串

Linux / 1.3.2 OR Darwin / 1.3.2 OR Windows / 1.3.2

它应该适用于Linux / Mac / Windows。

目前,我可以使用

runtime.GOOS

但是我无法找到获取OS主要/次要/微型版本的方法。

2 个答案:

答案 0 :(得分:4)

基于Go google group中的广泛讨论,看起来没有任何可靠的存在。我仍然建议你看看讨论,因为有一些有用的想法如何为特定操作系统提取一些信息。

P.S。浏览器是否在User_Agent中发送此信息?

User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36

答案 1 :(得分:1)

使用uname(适用于uname(2)系统调用),这些应该可以在Linux& MacOSX的。

我不明白为什么你需要这样精确的信息;顺便说一下,在Linux上,可能还有MacOSX,它还不够,libc(当然还有GO运行时)的版本至少同样重要。

(如果你愿意,你应该找到类似于Windows的东西)