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

我目前正在编写一个REST API客户端,我试图确定用户使用哪个操作系统来生成一个有用的用户代理string。 这将使我(希望)能够做出有关我将来支持什么操作系统的决定。

我想要做的是:生成一个如下所示的string:

Linux / 1.3.2或Darwin / 1.3.2或Windows / 1.3.2

它应该在Linux / Mac / Windows上工作。

目前,我可以使用检索操作系统types(例如:'linux'/'windows'/'darwin')

runtime.GOOS 

但我无法find一个方法来抓住操作系统主要/次要/微型版本。

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

PS没有浏览器在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 

使用uname (对于uname(2)系统调用),这应该在Linux和MacOSX等POSIX系统上可用。

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

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