Hello Go world!
Go言語(Golang)に入門しました。
Go言語は実行環境としては事前コンパイルなしに動かすことも、コンパイルしてから動かすこともできるらしく、またマルチプラットフォームで動作できます。
しかも、一つの環境で各種OSに対応した実行ファイルが作れたりするようです。
(pyinstaller等を使うPythonはコンパイルしたOSと動作するOSが一致している必要がある)
ここでは、UbuntuでVS Codeを使って開発できる環境構築を目指しましたが、Windows等でもVS Codeの部分は同様と思われます。
#Goのインストール $ sudo apt-get install -y golang #サンプルコードを書く $ vim hello.go #スクリプトの実行 $ go run hello.go >>hello go!
package main import "fmt" func main(){ fmt.Println("Hello go!") }
これでHello worldできました。
VS Codeの環境を構築
次にVS Codeの環境を構築します。
learn.microsoft.com
コマンドパレット(Ctrl + Shift + P)からGo: install/Update Toolsを選択し実行し、検索されるすべてのツールをチェックし、インストールします。

先程のサンプルコードをVS Codeで開きます。
VS Codeで新しいターミナルを開きgo mod init sample-appを実行し、アプリケーションを初期化します。
(ここでsample-appがプロジェクト名、何でも良い)
VS Code上部のメニューから実行¥デバッグの開始または実行¥デバッグなしで実行を行うとサンプルコードが実行されます。
ここで、上記初期化でgo.modという設定ファイルのようなものが生成されますが、これは下位フォルダにも効果が及ぶようです。
基本文法
Hello.goは上記のようなものを書いてみましたが、package mainはmainと言うパッケージの宣言、import "fmt"はPrint系のモジュールのimportで、C言語と同様にmain()から実行されるようです。
また、複数のモジュールをimportする場合は以下のようにまとめて書くことができます。
import ( "fmt" "net/http" )
変数の宣言は
var text string text="Hello world"
このように書きますが、以下のようにセイウチ演算子:=を使うと型推論を用いることもできます。
text:="Hello world"
コンソール入力は&で変数のアドレスを指定して受け取ります。
var str string fmt.Scan(&str) // データを格納する変数のアドレスを指定 fmt.Println(str)
複数のときはfmt.Scan(&n[0], &n[1], &n[2])のように変数を並べます。
このとき、スペース区切りで12 23 45でも改行区切りでもOKのようです。
var n [3]int fmt.Scan(&n[0], &n[1], &n[2]) for i := 0; i < 3; i++ { fmt.Println(n[i]) }
if文はC言語とほぼ同じですが、if 条件文またはelseと{}の間に改行があるとErrorになるようです。
j:=1 if str =="a"{ j+=2 } else{ j++ } fmt.Println(j) //以下はError if str =="a" //ここの改行がError { j+=2 } //以下もError ・・・ } //ここの改行がError else { j++ }
