はじめに
何となくGOを使ってみたいなと思い、linux に環境をインストールしてtutorial を行ったので、メモしておきます。
インストールについては、GOのページに書いてある情報で全く困らなかったので、tutorial のところだけメモしておきます。
全くGOについて知識がないので、間違えがあるかもしれませんがご容赦ください。
メモ
Module file
以下のファイルがあり go run .
とするとHello world ができるか、と思いきや、できませんでした。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
$ go run .
go: go.mod file not found in current directory or any parent directory; see 'go help modules'
ソースコードで使用するモジュールの依存関係を調べて解決する必要がります。その情報は go.mod というファイルに書かれるようです。
That go.mod file stays with your code, including in your source code repository. とチュートリアルに書かれています。
$ go mod init example/hello
go: creating new go.mod: module example/hello
$ ls
go.mod hello.go
とすると、go.mod というファイルが作られます。これで実行できるようになります。
$ go run .
Hello, World!
モジュールを追加して使用する
今度は、モジュールを追加して使用します。ここでは、grc.io/quote というものを使います。
先程のhello.go に
import "grc.io/quote"
を追加してgo run . を実行すると、エラーが出ます。
$ go run .
hello.go:4:8: no required module provides package rsc.io/quote; to add it:
go get rsc.io/quote
Tutorialに書かれている通り、以下を実行すると、自動的に追加されます。tidy は「几帳面」の意味らしい。
$ go mod tidy
go: finding module for package rsc.io/quote
go: found rsc.io/quote in rsc.io/quote v1.5.2
$ go run .
# example/hello
./hello.go:4:8: imported and not used: "rsc.io/quote"
実行すると、なんとimport したのに使っていない、と言われてしまします。
package main
import "fmt"
import "rsc.io/quote"
func main() {
fmt.Println("Hello, World!")
fmt.Println(quote.Go())
}
これで実行できました。
$ go run .
Hello, World!
Don't communicate by sharing memory, share memory by communicating.
まとめ
とりあえずtutorialを終えた。go.modが大切そう、という感じだけわかりました。何か作ってみたいが、いい題材はないかな。クラウド関係で。
良さげなページがあったのでメモ
- WEB application の開発
https://iij.github.io/bootcamp/server-app/go/#_0-1-%E7%9B%AE%E7%9A%84 - GCPのCloudRunのチュートリアルをGOで
https://cloud.google.com/run/docs/quickstarts?hl=ja