2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

チュートリアル: Go言語をはじめよう

Last updated at Posted at 2023-05-31

このページは、Tutorial: Get started with Goページ(2023-05-31時点の記事)を翻訳したものです。

チュートリアル: Go言語をはじめよう

目次:

  • 前提条件
  • Goをインストールする
  • コードを書く
  • 外部パッケージのコードを呼び出す
  • さらにコードを書く

このチュートリアルでは、Goプログラミングの簡単な紹介をします。その過程で、あなたは

  • Goをインストールします(まだインストールしていない場合)。
  • 簡単な「Hello, world」コードを書きます。
  • コードを実行するためにgoコマンドを使用します。
  • パッケージを検索するツールを使って、自分のコードで使用できるパッケージを見つけます。
  • 外部モジュールの関数を呼び出します。

その他のチュートリアルはチュートリアルをご覧ください。

前提条件

  • 何らかのプログラミングの経験があること。ここでのコードはとてもシンプルですが、関数について知っていると役に立ちます。
  • コードを編集するためのツール。あなたが持っているテキストエディタであれば、どんなものでも問題なく使えます。ほとんどのテキストエディタは、Goをよくサポートしています。VSCode(無料)、GoLand(有料)、Vim(無料)が代表的です。
  • コマンドターミナル。LinuxやMacではターミナルを、WindowsではPowerShellやcmdを使うと、Goはうまく動作します。

Goをインストールする

ダウンロードとインストールの手順でOKです。

コードを書く

Hello, Worldを始めましょう。

1. コマンドプロンプトを開き、ホームディレクトリにcdします。

LinuxまたはMacの場合:

cd

Windowsの場合

cd %HOMEPATH%

です。

2. 最初のGoソースコード用にhelloディレクトリを作成します。

例えば、次のようなコマンドを使用します:

mkdir hello
cd hello
3. コードの依存性追跡を有効にします。

あなたのコードが他のモジュールに含まれるパッケージをインポートする場合、その依存関係をあなたのコード自身のモジュールで管理します。このモジュールは、パッケージを提供するモジュールを追跡するgo.modファイルによって定義されます。このgo.modファイルは、ソースコードリポジトリを含め、あなたのコードと一緒に残ります。

go.modファイルを作成してコードの依存性追跡を有効にするには、go mod initコマンドを実行し、あなたのコードが入るモジュールの名前を与えます。この名前は、モジュールのモジュールパスです。

実際の開発では、モジュールパスは通常、ソースコードが保存されているリポジトリの場所となります。例えば、モジュールパスはgithub.com/mymoduleのようなものです。他の人が使えるようにモジュールを公開する場合、モジュールパスはGoツールがモジュールをダウンロードできる場所でなければなりません。モジュールパスによるモジュールの命名の詳細については、依存関係の管理 を参照してください。

このチュートリアルでは、example/helloを使うだけで構いません。

$ go mod init example/hello
go: creating new go.mod: module example/hello
4. テキストエディタで、コードを書くためのファイルhello.goを作成します。
5. 以下のコードをhello.goファイルに貼り付け、ファイルを保存してください。
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

これは、あなたのGoコードです。このコードで、あなたは

  • メインパッケージを宣言します(パッケージは関数をグループ化する方法であり、同じディレクトリにあるすべてのファイルから構成されます)。
  • コンソールへの出力など、テキストをフォーマットするための関数が含まれている、人気のあるfmtパッケージをインポートします。このパッケージは、Goをインストールしたときに入手した標準ライブラリパッケージの1つです。
  • コンソールにメッセージを表示するためのmain関数を実装します。main関数は、mainパッケージの実行時にデフォルトで実行されます。
6. コードを実行すると、挨拶が表示されます。
$ go run .
Hello, World!

外部パッケージのコードを呼び出す

誰かが実装したようなことを自分のコードで行う必要がある場合、自分のコードで使用できる関数を持つパッケージを探すことができます。

1. 外部モジュールの機能を使って、出力されるメッセージをもう少し面白くしてみませんか?
  • pkg.go.dev にアクセスし、「quote」パッケージを検索します。
  • 検索結果でrsc.io/quoteパッケージを見つけ、クリックします(rsc.io/quote/v3が表示されたら、今は無視します)。
  • Documentation セクションの Indexの下に、コードから呼び出せる関数のリストがあることに注意してください。あなたはGo関数を使用することになります。
  • このページのトップで、パッケージのquoteがrsc.io/quoteモジュールに含まれていることに注目してください。

pkg.go.devサイトでは、自分のコードで使える機能を持つパッケージが公開されているモジュールを見つけることができます。パッケージは、rsc.io/quoteのようなモジュールで公開され、他の人がそれを使うことができます。モジュールは時間とともに新しいバージョンに改良され、改良されたバージョンを使うために自分のコードをアップグレードすることができます。

2. Goコードで、rsc.io/quoteパッケージをインポートし、そのGo関数への呼び出しを追加します。

ハイライトされた行を追加した後、あなたのコードには次のようなものが含まれているはずです:

package main

import "fmt"

import "rsc.io/quote"

func main() {
    fmt.Println(quote.Go())
}
3. 新しいモジュールの要件とsumファイルを追加します。

Goは、quoteモジュールを要件として追加し、モジュールの認証に使用するためのgo.sumファイルを追加します。詳しくは、Goモジュールリファレンスのモジュールの認証を参照してください。

$ go mod tidy
go: finding module for package rsc.io/quote
go: found rsc.io/quote in rsc.io/quote v1.5.2
4. コードを実行して、呼び出している関数が生成するメッセージを確認します。
$ go run .
Don't communicate by sharing memory, share memory by communicating.

あなたのコードがGo関数を呼び出し、コミュニケーションに関する賢いメッセージを表示していることに注目してください。

ここで出力される
Don't communicate by sharing memory, share memory by communicating.
の翻訳に関しては、以下の記事が参考になりそうでした。

go mod tidyを実行したとき、それはあなたがインポートしたパッケージを含むrsc.io/quoteモジュールを探し出し、ダウンロードしました。デフォルトでは、最新バージョン -- v1.5.2-- をダウンロードしました。

さらにコードを書く

この簡単な紹介で、あなたはGoをインストールし、いくつかの基本的なことを学びました。別のチュートリアルでさらにコードを書くには、Goモジュールを作成するをご覧ください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?