😸

Go言語 Hello World

2020/10/17に公開

(作成2020.10.17/更新2020.10.21)

コードを書く前にフォルダの設定が重要

golangはかっちり書くことで、個性をできるだけ減らし、チームでのコーディングを進めやすくしていくことを目的としているとのこと。なので、フォルダ(ディレクトリ)の設定もかなりシビアになっている。細かいことは置いといて、いろいろと経験した結果の私のフォルダ環境をさらしておきます。

githubに管理する前提にしてますが、githubを使わないのであればあえて「github.com / accountID」をかませる必要はありません。重要なのは、自分が作成したパッケージをGOPATH傘下に置いておかないと引用ができなくなってしまうということです。go/srcの下に作業フォルダを置くのがおすすめです。
と、初心者向けに一旦は書いておきつつ、実はバージョン1.12以降はGo modulesの利用が推奨されています。go mod initしさえすればどこに置いておいても問題ありません。golangの大体の構造がわかってきたらGo modulesに移行しましょう。Go modules について

コーディング事始め

Visual Studio Code (VS Code) を使っていきます。Git-Bashを起動して作業ディレクトリに移動してから次を打ち込みます。

$ touch main.go
$ code .


welcomeページとともにフォルダ環境とmain.goファイルができていることがわかります。main.goをクリックして開いてから「pkgm」と打ち込みます。

そして、Enterすると、

ひな形コードが作成されます。ん~、便利。プログラムは常にmain()から実行されます。
そして、次のように1文書き込みます。

他の言語に比べて文章を出力するのにやや長く書く必要がありますが、こういうものなのでしょうがありません。大文字小文字も区別する必要があります。また「"」でなければなりません。「'」ではダメです。文字のasciiコードが返ってきてしまいます。書けたら「Ctrl + s」を押してファイルをセーブします。
ここまでの間で、VSCodeからいろいろなものをインストールしろとポップアップがたくさん出てくると思いますが、ここは快く受け入れてください。もしポップアップがなければ、補助機能(Extension)として次のものを手動で入れておくとよいでしょう。

今後もしばらくは作業中にいろいろとポップアップでレコメンドされてきますが、何かわからなければ基本的にはOKでよいと思います。中には不要なものもありますので重くなるのが嫌であれば避けてもかまいません。私は重くなるのが嫌なので不必要なものは避けてます。どれが必要でどれが不必要なのかはまずは入れてみてしばらく使ってみるとそのうちわかってくると思います。

自動的に、

import "fmt"

が追加されたと思います。便利な機能です。外部パッケージを文中にて引用すると自動的にインポートする手続きを追加してくれます。パッケージが複数あるとアルファベット順に整列されます。なるべく記述が統一されるよう配慮されています!もっというと、外部パッケージと自分で作成したパッケージは分けて記述されます。この辺は自動的に処理してくれるのでプログラマーはこの部分を意識する必要はありません。(うまく機能しなくて手動で書く必要があることもママありますが。。)

そして実行。

Git-Bashから、

実行されました。
私は別窓のGit-Bashを使ってます。VSCode上でターミナルを起動してそこで実行することも可能ですが、VSCode上のターミナルから実行した場合、デフォルトでPowershellが立ち上がります。もちろんこのまま使っても問題はないかと思います。PowershellをGit-Bash(bash)に切り替えることは可能です。末尾に切り替え方を記載しておきます。VSCodeでF5キーからデバッグモードを使った実行も可能ですが、こちらは手数がかかるのでデバッグをするときでなければ通常の実行時は扱いづらいように思います。

関数の呼び出し方と特殊な関数init()

関数の参照の仕方を書いておきます。また、関数init()というのがあって、これはmain()の実行の前に呼び出されます。初期化に使えますね。

実行結果はこちら。

付録:VSCodeのTerminalでbashを使う

VSCodeのメニュー Prefarences > setting でterminal.integrated.shell.windowsといれて、setting.jsonを起動して、該当箇所に

と記述すればOKです。

Discussion