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++ }