【Go】インストールからhello, worldまでやってみる
モチベーション
Go言語を勉強したい。勉強した末に、Vuguでアプリケーションを作成したい!
環境構築
go言語の環境がないので作成しないといけない。大変なのかな?
さっそくGetting Startedにそってinstallだ。
Download
ダウンドーロページからGoを持ってくるのかな?
homebrewでできそうな感じがする。だから探してみる。
あった。Go Formulae。
つまり、homebrewでinstallできるってことでokそう。
❯ brew install go ~~~中略~~~ ==> Pouring go-1.12.4.mojave.bottle.tar.gz 🍺 /usr/local/Cellar/go/1.12.4: 9,798 files, 452.6MB
パスの設定
無事にinstallできたらパスの設定を行う必要があるみたいですね。
shellでgo --version
みたいにgoコマンドを打つために。
僕のshellはzshなので.zshrcにパスの設定を書かなければ。
このパスの設定を簡単にできるUnix系のコマンドありそうなんだけど、僕は知らないためエディタで開いて書き込む。
と、思ったけど検索したら良さそうな記事を見つけました。感謝!
見るとパスの設定以外にGoパスというgoオリジナルのパスも設定する必要があるのかな?
bashの箇所をzshに書き換えたら動くのかな?というか動いてくれ!
なんてやらなくてよかった。もうパスが通ってた。
しかもgo version
で--
を書かなくてもいいみたい。
❯ go version go version go1.12.4 darwin/amd64
ちゃんとinstallできたらテスト
公式HPに戻り続きをやるぞ!
ふむ、hello.goというファイルを作ればいいのかな?
❯ touch hello.go
中身をコピペするぞ。
// source: https://golang.org/doc/install#testing package main import "fmt" func main() { fmt.Printf("hello, world\n") }
これであとはbuildだね。
terminalに戻ってbuildだ。
❯ go build can't load package: package .: hello.go:1:1: expected 'package', found 'EOF'
なんとなく分かってた。Goパスを設定しなければならないということを。
Goパスの設定
親切にもgithubのgolangの公式wiki内に書いてある。
さらに親切にzsh用の書き方まである!!!たまげた。
❯ code ~/.zshrc
.zshrcに以下を追加。
export GOPATH=$HOME/go
で、エディタで変更を保存して、sourceで更新!
source ~/.zshrc
再度実行
Goパスも設定できたし、buildしてみるぞ!
❯ go build can't load package: package .: hello.go:1:1: expected 'package', found 'EOF'
あれれ〜?おっかしいぞ〜?
原因
hello.goに一文字も書いてなかった。
この記事を書きつつbuildしてたからhello.goにも書いてたと思ってしまった。
今度こそ、しっかり書き込むぞ!
再再度実行
❯ go build
できた!通った!
同じフォルダ内に、go-playground
っていうのができた。
公式だとhelloディレクトリ内で行なっているからhelloっていうファイルができるみたい。
なので公式のをそのままやると、
❯ ./hello zsh: no such file or directory: ./hello
エラー。 Go言語のビルド語のファイル名はフォルダ名の名前になるんだね。把握しました。 で、go-playgroundを実行してみる。
/go-playground ❯ ./go-playground hello, world
hello, worldできまーした!
次回
公式HPのHow to Write Go Codeをやってみるぞ。
やってみたのが以下の記事。 https://tomatoaiu-nikki.hatenablog.com/entry/2020/07/16/065004
参考文献
- The Go Programming Language,入手先 https://golang.org/
- A Tour of Go,入手先 https://go-tour-jp.appspot.com/welcome/1