はじめに
Go言語をCygwinベースで実行できるようにします。
参考にしたのは公式サイトです。
ドキュメントページにGetting startedとあるので、これに沿っていきます。
Getting started
Installing Go
TOPページから、Windowsの場合はmsiファイルがダウンロードできるので、まずはインストールしましょう。
Goのインストール場所はデフォルトで C:\Program Files\Go\bin\go.exe
こちらなので、/usr/local/bin/
あたりにシムリンクを作成しておきます。
(gofmt
もついでに。gofmt
の詳細はこの記事に出てきません。)
$ cd /usr/local/bin/ $ ln -s /cygdrive/c/Program\ Files/Go/bin/go go $ ln -s /cygdrive/c/Program\ Files/Go/bin/gofmt gofmt $ go version go version go1.16.2 windows/amd64
Write some code
あとは手順どおり。
適当なディレクトリに移動して、作業ディレクトリを作成します。
mkdir hello cd hello
次に、コードの依存関係のトラッキングを有効にします。
なんのこっちゃですが、これを行うことで依存モジュールの管理(自動検知やバージョンの固定、新バージョンの検知など)ができます。
今回はexample.com/hello
ですが、通常はgithub.com/mymodule
など、ソースコードが保存されるリポジトリの場所になるとのこと。
$ go mod init example.com/hello go: creating new go.mod: module example.com/hello
表示の通り、go.mod
というファイルが作成されます。
次に、hello.go
という名前でファイルを作り、中身を下記のようにします。
package main import "fmt" func main() { fmt.Println("Hello, World!") }
最後に、下記コマンドを打つことで実行できます。
$ go run . Hello, World!
Call code in an external package
もう少しパッケージの話が続きます。
誰かが作ってそうなコードについては、探してそれを使うことも可能です。
ここの例では、下記を使ってみる流れになります。
pithy sayings(格言、ですかね)を返すだけのモジュールです。
hello.go
を編集して、下記のようにしてみます。
package main import "fmt" import "rsc.io/quote" func main() { fmt.Println(quote.Go()) }
手順にはありませんが、このまま実行しようとすると怒られます。
$ go run . hello.go:5:8: no required module provides package rsc.io/quote; to add it: go get rsc.io/quote
go get
しろやと言われますが、今回は手順に沿ってgo mod
で解決します。
go help mod tidy
するとわかりますが、必要なモジュールの追加と不要なモジュールの削除をやってくれます。
$ go mod tidy go: finding module for package rsc.io/quote go: downloading rsc.io/quote v1.5.2 go: found rsc.io/quote in rsc.io/quote v1.5.2 go: downloading rsc.io/sampler v1.3.0 go: downloading golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c
rsc.io/sampler
も取り込んでますが、これはrsc.io/quote
内で使用しているからです。
ソースコードを見るとわかります。
https://pkg.go.dev/rsc.io/quote
また、go.sum
ファイルができあがってますが、これはチェックサムのsumですね。ファイルの中身を見てみるとわかります。
$ ls go.mod* go.sum* hello.go
最後に、ファイルを実行すると…
$ go run . Don't communicate by sharing memory, share memory by communicating.
外部パッケージの機能を使って、無事に文字列を出力することができました。
Write more code
もっとコードを書きたい方は…ということで、リンク先が紹介されています。
興味ある方はぜひ。
終わりに
Cygwinで構築、だけでなく流れでチュートリアルの最初までやっちゃいましたが…
何となく雰囲気だけでもつかめるとよいかなと思いました。
以上でした!