チュートリアル: Goを始めよう

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

前提条件

Goをインストールする

ダウンロードとインストールの手順に従ってください。

コードを記述する

Hello, Worldから始めましょう。

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

    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コードです。このコードでは、以下を行います。

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

    $ go run .
    Hello, World!
    

    go runコマンドは、Goで物事を成し遂げるために使用する多くのgoコマンドの1つです。次のコマンドを使用して、他のコマンドのリストを取得します。

    $ go help
    

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

コードで、他の人が実装した可能性のある何かを行う必要がある場合は、コードで使用できる関数を持つパッケージを探すことができます。

  1. 外部モジュールの関数を使用して、印刷されたメッセージを少し面白くします。
    1. pkg.go.devにアクセスして、「quote」パッケージを検索します。
    2. 検索結果でrsc.io/quoteパッケージを見つけてクリックします(rsc.io/quote/v3が表示された場合は、今は無視してください)。
    3. ドキュメントセクションのインデックスの下に、コードから呼び出すことができる関数リストに注意してください。Go関数を使用します。
    4. このページの上部で、パッケージquotersc.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. 新しいモジュール要件と合計を追加します。

    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関数を呼び出し、コミュニケーションに関する賢いメッセージを出力することに注意してください。

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

さらにコードを記述する

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