非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Go言語でOSを判別する方法

   

Go言語でどうしてもOS依存の処理をしなければならないケースがあると思います。

もしかして、そんなものは言語内でカバーされているとしたら僕の知識不足なのですが、例えばコマンドを投げる時とか。

そんなときにプログラム内でどのOS上で実行されているかを知り、OSに応じて処理を変えなければなりません。

広告

 

まず、runtimeパッケージをインポートする必要があります。※fmtパッケージは直接関係ないですが、コンソール出力を使うので…。

import (
  "fmt"
  "runtime"
)
 

 

runtimeパッケージは、以下のようにアーキテクチャとOS名を取得することができます。

fmt.Println(runtime.GOARCH, runtime.GOOS)
//amd64 windows
 

 

なので、その機能を使って以下のようにOSを判別させればいいわけですね。

if runtime.GOOS == "windows" {
  fmt.Println("Windows")
}else if runtime.GOOS == "linux"{
  fmt.Println("linux")
}
 

 

とりあえず手持ちのWindowsマシンとLinuxマシンでは判別できることは確認できました。Macはどのような名前で現れるのかは確認できていませんが、「mac」かな?

 

広告

 - Go言語