文書の過去の版を表示しています。
Go言語
本家: The Go Programming Language
ソースコード: golang/go: The Go programming language
Go はプログラミング言語の 1 つである。(コンパイラー言語) 2009 年、Google で Robert Griesemer、ロブ・パイク、ケン・トンプソンによって設計された。Go は、静的型付け、C言語の伝統に則ったコンパイル言語、メモリ安全性、ガベージコレクション、構造的型付け、CSP スタイルの並行性などの特徴を持つ。Go のコンパイラ、ツール、およびソースコードは、すべてフリーかつオープンソースである。
また、軽量スレッディングのための機能、Python のような動的型付け言語のようなプログラミングの容易性、などの特徴もある。Go 処理系としてはコンパイラのみが開発されている。マスコット・キャラクターは Gopher (ホリネズミ)。
Go (プログラミング言語) - Wikipedia より
インストール
公式: Download and install - The Go Programming Language 翻訳
$ sudo dnf install -y golang
リポジトリの更新を読み込み中: リポジトリを読み込みました。 Package Arch Version Repository Size Installing: golang x86_64 1.23.6-1.fc41 updates 8.9 MiB Installing dependencies: go-filesystem x86_64 3.6.0-5.fc41 updates 0.0 B golang-bin x86_64 1.23.6-1.fc41 updates 113.9 MiB golang-src noarch 1.23.6-1.fc41 updates 76.3 MiB Installing weak dependencies: mercurial x86_64 6.8.2-1.fc41 updates 30.8 MiB Transaction Summary: Installing: 5 packages パッケージサイズ 47 MiB 、ダウンロードサイズ 47 MiB 。 完了後、230 MiB のサイズが利用されます(インストール 230 MiB、削除 0 B)。 [1/5] golang-0:1.23.6-1.fc41.x86_64 100% | 336.0 KiB/s | 668.9 KiB | 00m02s [2/5] go-filesystem-0:3.6.0-5.fc41.x86_64 100% | 38.6 KiB/s | 9.0 KiB | 00m00s [3/5] golang-src-0:1.23.6-1.fc41.noarch 100% | 762.2 KiB/s | 12.8 MiB | 00m17s [4/5] mercurial-0:6.8.2-1.fc41.x86_64 100% | 390.4 KiB/s | 6.5 MiB | 00m17s [5/5] golang-bin-0:1.23.6-1.fc41.x86_64 100% | 915.6 KiB/s | 27.5 MiB | 00m31s ------------------------------------------------------------------------------------------------------------------ [5/5] Total 100% | 1.5 MiB/s | 47.4 MiB | 00m32s トランザクションを実行中 [1/7] パッケージ ファイルを検証 100% | 7.0 B/s | 5.0 B | 00m01s [2/7] トランザクションの準備 100% | 0.0 B/s | 5.0 B | 00m08s [3/7] インストール中 go-filesystem-0:3.6.0-5.fc41.x86_64 100% | 876.0 B/s | 392.0 B | 00m00s [4/7] インストール中 golang-src-0:1.23.6-1.fc41.noarch 100% | 21.8 MiB/s | 77.2 MiB | 00m04s [5/7] インストール中 golang-bin-0:1.23.6-1.fc41.x86_64 100% | 64.9 MiB/s | 113.9 MiB | 00m02s [6/7] インストール中 golang-0:1.23.6-1.fc41.x86_64 100% | 25.2 MiB/s | 8.9 MiB | 00m00s [7/7] インストール中 mercurial-0:6.8.2-1.fc41.x86_64 100% | 1.4 MiB/s | 31.1 MiB | 00m22s 完了しました!
$ go version
go version go1.23.6 linux/amd64
Go のワークスペース (GOPATH 環境変数)
公式: How to Write Go Code (with GOPATH) - The Go Programming Language 翻訳
Go のワークスペースは標準で $HOME/go
です。
$ go env GOPATH
/home/tomoyan/go
Go でインストールしたコマンドを使用するには $(go env GOPATH)/bin
を PATH に追加する。
$ mkdir -p ~/go $ cat << 'EOF' >> ~/.commonshrc # go initialize export GOPATH=$(go env GOPATH) export PATH=$PATH:$(go env GOPATH)/bin EOF $ . ~/.bashrc $ echo $GOPATH
/home/tomoyan/go/bin: ...
$ echo $GOPATH
/home/tomoyan/go
GOPATH を変更するには以下のように設定する。
$ mkdir -p ~/.go $ cat << 'EOF' >> ~/.commonshrc # go initialize export GOPATH=$HOME/.go export PATH=$PATH:$(go env GOPATH)/bin EOF $ . ~/.bashrc $ echo $GOPATH $ go env GOPATH
/home/tomoyan/.go
プログラムの作成
公式: Tutorial: Get started with Go - The Go Programming Language 翻訳
Go でプログラムを作成するには、$(go env GOPATH)/src
サブディレクトリに .go 拡張子を持つファイルを作成する。
go.mod ファイルを作成してコードの依存関係追跡を有効にする。
$ mkdir -p $(go env GOPATH)/src/haruo && cd $(go env GOPATH)/src/haruo $ go mod init example/haruo
go: creating new go.mod: module example/haruo go: to add module requirements and sums: go mod tidy
$ cat go.mod
gmodule example/haruo go 1.20
$ nano haruo.go
- haruo.go
package main import "fmt" func main() { fmt.Println("Haruo, World!") }
変更を保存し、同じディレクトリで haruo.go を実行する。
$ go run .
Haruo, World!
hello.go をビルドするは簡単である。
$ go build $ ls
go.mod haruo haruo.go
$ ./haruo
Haruo, World!
さらに go install で $GOPATH/bin にインストールされる。
$ go install $ ls $(go env GOPATH)/bin
haruo
また、$GOPATH/pkg のすべての依存関係を構築およびキャッシュする。
プログラムは $GOPATH/bin にインストールされるため、一般的には PATH 環境変数に追加して、フルパスを指定せずに Go プログラムを実行できるようにする。
$ echo 'export PATH=$PATH:$(go env GOPATH)/bin' >> $HOME/.bashrc $ source ~/.bashrc $ haruo
Haruo, World!
Go パッケージのインストール
Go パッケージは go install コマンドでインストールできる。
gotop
cjbassi/gotop: A terminal based graphical activity monitor inspired by gtop and vtop
Go 1.17 から go get
でのインストールが非推奨になった🤔
$ go get github.com/cjbassi/gotop
go: go.mod file not found in current directory or any parent directory. 'go get' is no longer supported outside a module. To build and install a command, use 'go install' with a version, like 'go install example.com/cmd@latest' For more information, see https://golang.org/doc/go-get-install-deprecation or run 'go help get' or 'go help install'.
go install
でインストールする。
$ go install github.com/cjbassi/gotop@latest
go: downloading github.com/cjbassi/gotop v0.0.0-20200829004927-65d76af83079 go: downloading github.com/docopt/docopt.go v0.0.0-20180111231733-ee0de3bc6815 go: downloading github.com/gizak/termui/v3 v3.0.0 go: downloading github.com/distatus/battery v0.9.0 go: downloading github.com/shirou/gopsutil v2.18.11+incompatible go: downloading github.com/cjbassi/drawille-go v0.0.0-20190126131713-27dc511fe6fd go: downloading github.com/mattn/go-runewidth v0.0.4 go: downloading github.com/mitchellh/go-wordwrap v1.0.0 go: downloading github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d go: downloading golang.org/x/sys v0.0.0-20190116161447-11f53e031339
gotop を実行する。
$ gotop
参考文献
Go — Fedora Developer Portal
Writing Go programs — Fedora Developer Portal
Gopher の人気度は: インターネット上の GoLang マルウェア分析 - Palo Alto Networks
Grumpy
Grumpy: Go running Python! | Google Open Source Blog
Grumpy(Go running Python)を試してみた。 - Qiita
グーグル、Pythonコードを「Go」言語に変換する「Grumpy」を公開 - ZDNet Japan