Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
Goのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
Go
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:プログラミング言語]] [[en:Go]] [[es:Go]] [[ru:Go]] [https://go.dev/ Go] は、Google がサポートするオープンソースプログラミング言語です。[https://go.dev/doc/ the Go documentation] から: Go は表現力豊かで、簡潔で、クリーンで効率的です。その同時実行メカニズムにより、マルチコアおよびネットワーク化されたマシンを最大限に活用するプログラムの作成が容易になり、また、その新しいタイプのシステムにより、柔軟なモジュール型プログラム構築が可能になります。Go はマシンコードに迅速にコンパイルされますが、ガベージコレクションの利便性と実行時リフレクションの機能を備えています。これは、動的に型付けされ解釈される言語のように感じられる、高速な静的型付けコンパイル言語です。 == インストール == {{pkg|go}} パッケージを [[インストール]] して下さい、これには標準の Go コンパイラーとその他の開発ツールが含まれています。含まれるサブコマンドのリストについては、[https://pkg.go.dev/cmd/go ''go'' コマンドのドキュメント] を参照してください。 === 代替コンパイラ === {{pkg|go}} パッケージには、''gc'' と呼ばれる標準 Go コンパイラが含まれています。次の代替コンパイラも使用できます。 ==== gccgo ==== [[GCC]] のフロントエンド [https://go.dev/doc/install/gccgo gccgo] は、{{pkg|gcc-go}} パッケージによって提供されます。''gccgo'' は、場合によっては ''gc'' より高速なバイナリを生成し、追加のオペレーティングシステムやアーキテクチャをターゲットにすることができます。[https://meltware.com/2019/01/16/gccgo-benchmarks-2019.html 実際には、ほぼすべてのワークロードにおいて、''gc'' は ''gccgo'' よりも高速なバイナリを生成します。] ==== TinyGo ==== [https://tinygo.org/ TinyGo] は、組み込みシステムおよび WebAssembly 用の非常に小さなバイナリを生成するように設計された [[LLVM]] ベースのコンパイラです。これは、{{pkg|tinygo}} パッケージによって提供されます。 === ツール === 次のパッケージは Go 用の開発者ツールを提供します: * {{App|Go ツール|主に Go プログラムの静的解析のための様々なツールと Go パッケージ。|https://cs.opensource.google/go/x/tools|{{Pkg|go-tools}}}} * {{App|gopls|公式 Go 言語サーバ|https://pkg.go.dev/golang.org/x/tools/gopls|{{Pkg|gopls}}}} * {{App|Delve|Go プログラミング言語のデバッガ。|https://github.com/go-delve/delve|{{Pkg|delve}}}} * {{App|go-bindata|任意のファイルから Go コードを生成する小さなユーティリティ。Go プログラムにバイナリデータを埋め込むのに便利です。|https://github.com/shuLhan/go-bindata|{{AUR|go-bindata}}, {{Pkg|go-bindata-hashicorp}}}} * {{App|GoReleaser|Go プロジェクト用のリリース自動化ツール |https://goreleaser.com/|{{Pkg|goreleaser}}}} * {{App|gox|複数のプラットフォームのビルドを並列化する Go クロスコンパイル用のツール。|https://github.com/mitchellh/gox|{{Pkg|gox}}}} * {{App|ko|Go アプリケーション用のコンテナイメージビルダ。|https://github.com/ko-build/ko|{{Pkg|ko}}}} * {{App|revive|高速、構成可能、拡張可能、柔軟で美しい Go 用 linter。|https://revive.run/|{{Pkg|revive}}}} * {{App|Staticcheck|Goプログラミング言語用の最先端のリンター。|https://staticcheck.io/|{{Pkg|staticcheck}}}} * {{App|Yaegi|Goインタプリタ。yaegi''コマンドラインインタープリタ /REPL を含みます。|https://github.com/traefik/yaegi|{{Pkg|yaegi}}}} === インストールディレクトリ === {{ic|go install}} コマンドは、{{ic|GOBIN}} [[環境変数]] で指定されたディレクトリに Go 実行可能ファイルをインストールします。{{ic|GOBIN}} のデフォルトは {{ic|$GOPATH/bin}}、または {{ic|GOPATH}} 環境変数が設定されていない場合は {{ic|~/go/bin}} です。 {{Tip|{{ic|go env}} を実行すると、すべての Go 変数を確認できます。}} 便宜上、bin サブディレクトリを {{ic|PATH}} に追加します: $ export PATH="$PATH:$(go env GOBIN):$(go env GOPATH)/bin" 詳細については、[https://go.dev/doc/code Go コードの書き方] および {{ic|go help install}} を参照してください。 == ヒントとテクニック == === ソースコードのコンパイル === Hello World プログラムは次のように作成できます: {{hc|hello.go| package main import "fmt" func main() { fmt.Println("Hello, Arch!") } }} 次に、''go'' ツールを使用して実行します: {{hc|$ go run hello.go| Hello, Arch! }} 標準コンパイラによるコンパイル ({{ic|1=go build -compiler=gc hello.go}} と同じ): $ go build hello.go ''gccgo'' によるコンパイル ({{ic|1=go build -compiler=gccgo hello.go}} と同じ): $ gccgo hello.go -o hello ''tinygo'' でのコンパイル: $ tinygo build -o hello ./hello.go === 他のプラットフォームへのクロスコンパイル === 標準コンパイラは、[https://go.dev/doc/install/source#introduction 多くのプラットフォーム] に対してネイティブにクロスコンパイルできます。手順は、ソースコードが [https://pkg.go.dev/cmd/cgo cgo] を使用して C コードを呼び出すかどうかによって異なります。 ==== CGO なし ==== ビルドに cgo が必要ない場合は、ターゲット OS とアーキテクチャを [[環境変数]] として {{ic|go build}} に指定するだけです。 $ GOOS=linux GOARCH=arm64 go build . {{ic|GOOS}} と {{ic|GOARCH}} の有効な組み合わせについては、[https://go.dev/doc/install/source#environment 公式ドキュメント] を参照してください。 ==== CGO あり ==== ビルドに cgo が必要な場合は、{{ic|CC}}/{{ic|CXX}} 環境変数を介して C/C++ クロスコンパイラーへのパスを指定する必要があります。 {{ic|1=GOOS=linux}} と {{ic|1=GOARCH=arm64}} をクロスコンパイルしたいとします。 まず、{{Pkg|aarch64-linux-gnu-gcc}} クロスコンパイラをインストールする必要があります。 以下は、クロスコンパイルプロセスをテストできるように cgo を必要とするサンプルプログラムです: {{hc|hello.go| package main // #include <stdio.h> // void hello() { puts("Hello, Arch!"); } import "C" func main() { C.hello() } }} 次に、次のようにクロスコンパイルできます: $ GOOS=linux GOARCH=arm64 CGO_ENABLED=1 CC=/usr/bin/aarch64-linux-gnu-gcc go build hello.go 生成されたバイナリのアーキテクチャが実際に aarch64 であることを確認できます: $ file hello hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=b1d92ae8840a019f36cc2aee4606b6ae4a581bf1, for GNU/Linux 3.7.0, not stripped {{ic|hello}} を適切なホストにコピーすると、テスト実行できます: [alarm@rpi3 ~]$ uname -a Linux alarm 5.3.8-1-ARCH #1 SMP Tue Oct 29 19:31:23 MDT 2019 aarch64 GNU/Linux [alarm@arpi3 ~]$ ./hello Hello, Arch! === 代替 Go モジュールミラーの使用 === デフォルトでは、Go は Google のサービス [https://proxy.golang.org/proxy.golang.org] をモジュールミラーとして使用します。 代替ミラーが必要な場合は、[[環境変数]] {{ic|GOPROXY}} を使用して変更できます。次に例を示します: $ export GOPROXY=https://goproxy.io/ 多数のパブリックモジュールミラーが利用可能です。[https://hugomods.com/en/blog/2023/04/go-and-hugo-proxy-servers/ Go および Hugo Proxy Servers] を参照してください。 == トラブルシューティング == === Jetbrains の Go プラグイン === もし Jetbrains IDE を使用していて Go プラグインが Go SDK のパスを見つけられない場合、互換性のないパッケージを使用している可能性があります。{{ic|gcc-go}} パッケージを削除し、{{ic|go}} パッケージで置き換えてください。GOPATH が設定されている場合、IDE は {{ic|/usr/lib/go}} に存在する Go SDK を認識します。 == 参照 == * [http://golang.org/ Go プログラミング言語のオフィシャルウェブサイト] * [[Wikipedia:ja:Go (プログラミング言語)|Wikipedia の記事]] * [https://gobyexample.com/ 簡単な説明が付いているサンプル] * [http://tour.golang.org インタラクティブな Go トレーニングツアー] * [https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins Go の IDE とプラグイン] * [https://docs.google.com/document/d/1OaatvGhEAq7VseQ9kkavxKNAfepWy2yhPUBs96FGV28/edit Go 1.5 Bootstrap Plan]
このページで使用されているテンプレート:
テンプレート:App
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Related articles start
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Related
(
ソースを閲覧
)
テンプレート:Related articles end
(
ソースを閲覧
)
テンプレート:Related articles start
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
Go
に戻る。
検索
検索
Goのソースを表示
話題を追加