前書き

https://golang.org [Go]は、Googleの不満から生まれたプログラミング言語です。 開発者は、効率的に実行されるがコンパイルに長い時間を要する言語を選択するか、プログラミングは容易であるが生産では非効率的に実行される言語を選択する必要がありました。 Goは、3つのすべてを同時に使用できるように設計されています。つまり、高速コンパイル、プログラミングの容易さ、および運用環境での効率的な実行です。

Goは、さまざまなプログラミングプロジェクトで使用できる汎用性の高いプログラミング言語ですが、ネットワーキング/分散システムプログラムに特に適し、「クラウドの言語」としての評価を得ています。 現代のプログラマーが強力なツールセットでより多くのことができるように支援し、フォーマットを言語仕様の一部にすることでフォーマットに関する議論を取り除き、単一のバイナリにコンパイルすることで展開を容易にします。 Goは非常に少ないキーワードセットで習得しやすく、初心者にも経験豊富な開発者にも最適な選択肢です。

このチュートリアルでは、コマンドラインからGoを使用してプログラミングワークスペースをインストールおよび構成する方法を説明します。 このチュートリアルでは、Ubuntu 18.04のインストール手順を明示的に説明しますが、一般的な原則は他のDebian Linuxディストリビューションにも適用できます。

前提条件

Ubuntu 18.04がインストールされたコンピューターまたは仮想マシンに加えて、そのマシンへの管理アクセスとインターネット接続が必要になります。 このオペレーティングシステムは、http://releases.ubuntu.com/releases/18.04/ [Ubuntu 18.04リリースページ]からダウンロードできます。

ステップ1-Goのセットアップ

この手順では、現在のリリースをhttps://golang.org/dl/[Goの公式ダウンロードページ]からダウンロードしてGoをインストールします。

これを行うには、現在のバイナリリリースのtarballのURLを検索する必要があります。 このハッシュをhttps://www.digitalocean.com/community/tutorials/how-to-verify-downloaded-files [ダウンロードしたファイルを検証する] ]。

コマンドラインでインストールとセットアップを完了します。これは、コンピューターと対話する非グラフィカルな方法です。 つまり、ボタンをクリックする代わりに、テキストを入力し、テキストを介してコンピューターからフィードバックを受け取ります。

_shell_または_terminal_とも呼ばれるコマンドラインは、コンピューターで毎日行うタスクの多くを変更および自動化するのに役立ち、ソフトウェア開発者にとって不可欠なツールです。 より強力なことを実行できるようにするために、学ぶべき多くの端末コマンドがあります。 コマンドラインの詳細については、https://www.digitalocean.com/community/tutorials/an-introduction-to-the-linux-terminal [Linuxターミナルの紹介]チュートリアルをご覧ください。

Ubuntu 18.04では、画面の左上隅にあるUbuntuアイコンをクリックして、検索バーに「+ terminal 」と入力することにより、ターミナルアプリケーションを見つけることができます。 ターミナルアプリケーションアイコンをクリックして開きます。 または、キーボードの「 CTRL」、「+ ALT」、および「+ T +」キーを同時に押すと、ターミナルアプリケーションが自動的に開きます。

image:https://assets.digitalocean.com/articles/eng_python/UbuntuDebianSetUp/UbuntuSetUp.png [Ubuntuターミナル]

ターミナルが開いたら、Goバイナリを手動でインストールします。 `+ apt-get +`などのパッケージマネージャーを使用することもできますが、手動のインストール手順を確認することで、有効なGoワークスペースを作成するために必要なシステムの設定変更を理解するのに役立ちます。

Goをダウンロードする前に、ホーム( )ディレクトリにいることを確認してください:

cd ~

Goの公式ダウンロードページからコピーしたtarball URLを取得するには、 `+ curl +`を使用します。

curl -O https://dl.google.com/go/.tar.gz

次に、 `+ sha256sum +`を使用してtarballを確認します。

sha256sum .tar.gz

上記のコマンドの実行から表示されるハッシュは、ダウンロードページにあったハッシュと一致する必要があります。 そうでない場合、これは有効なファイルではないため、ファイルを再度ダウンロードする必要があります。

Output2a3fdabf665496a0db5f41ec6af7a9b15a49fbe71a85a50ca38b1f13a103aeec  .tar.gz

次に、ダウンロードしたアーカイブを抽出し、システム上の目的の場所にインストールします。 `+ / usr / local`の下に保管することをお勧めします:

sudo tar -xvf .tar.gz -C /usr/local

これで、 + / usr / local`ディレクトリに + go + `というディレクトリが作成されます。 次に、このディレクトリの所有者とグループを再帰的に* root *に変更します。

sudo chown -R root:root /usr/local/go

これにより、すべてのファイルが保護され、* root *ユーザーのみがGoバイナリを実行できるようになります。

このステップでは、Ubuntu 18.04マシンにGoをダウンロードしてインストールしました。 次の手順では、Goワークスペースを構成します。

ステップ2-Goワークスペースの作成

Goがインストールされたので、プログラミングワークスペースを作成できます。 Goワークスペースのルートには2つのディレクトリが含まれます。

  • + src +:Goソースファイルを含むディレクトリ。 ソースファイルは、Goプログラミング言語を使用して記述するファイルです。 Goコンパイラは、ソースファイルを使用して実行可能なバイナリファイルを作成します。

  • + bin +:Goツールによってビルドおよびインストールされた実行可能ファイルを含むディレクトリ。 実行可能ファイルは、システムで実行され、タスクを実行するバイナリファイルです。 これらは通常、ソースコードまたは他のダウンロードされたGoソースコードによってコンパイルされたプログラムです。

`+ src `サブディレクトリには、複数のバージョン管理リポジトリ(https://git-scm.com/[Git]、https://www.mercurial-scm.org/[Mercurial]、http://など)を含めることができますbazaar.canonical.com [Bazaar])。 これにより、プロジェクト内のコードの標準的なインポートが可能になります。 _Canonical_インポートは、 ` github.com / digitalocean / godo +`などの完全修飾パッケージを参照するインポートです。

プログラムがサードパーティのライブラリをインポートするときに、 + github.com +、 `+ golang.org `などのディレクトリが表示されます。 ` github.com +`のようなコードリポジトリを使用している場合は、プロジェクトとソースファイルもそのディレクトリに配置します。 このステップの後半で、この概念を検討します。

典型的なワークスペースは次のようになります。

.
├── bin
│   ├── buffalo                                      # command executable
│   ├── dlv                                          # command executable
│   └── packr                                        # command executable
└── src
   └── github.com
       └── digitalocean
           └── godo
               ├── .git                            # Git repository metadata
               ├── account.go                      # package source
               ├── account_test.go                 # test source
               ├── ...
               ├── timestamp.go
               ├── timestamp_test.go
               └── util
                   ├── droplet.go
                   └── droplet_test.go

1.8でのGoワークスペースのデフォルトディレクトリは、ユーザーのホームディレクトリで、 `+ go `サブディレクトリ、または ` $ HOME / go `があります。 1.8より前のバージョンのGoを使用している場合、ワークスペースに ` $ HOME / go +`の場所を使用することは依然としてベストプラクティスと見なされます。

次のコマンドを発行して、Goワークスペースのディレクトリ構造を作成します。

mkdir -p $HOME/go/{bin,src}

`+ -p `オプションは、ディレクトリにすべての ` parents `が存在しない場合でも作成するように ` mkdir `に指示します。 ` {bin、src} `を使用すると、 ` mkdir `の引数セットが作成され、 ` bin `ディレクトリと ` src +`ディレクトリの両方を作成するように指示されます。

これにより、次のディレクトリ構造が適切に配置されます。

└── $HOME
   └── go
       ├── bin
       └── src

Go 1.8より前は、 `+ $ GOPATH `というローカル環境変数を設定する必要がありました。 ` $ GOPATH +`は、インポートしたサードパーティのソースコードと、作成したローカルソースコードの場所をコンパイラに指示しました。 明示的には必須ではありませんが、設定されているこの変数に依拠するサードパーティ製ツールが多いため、依然として優れたプラクティスと考えられています。

+〜/ .profile`にグローバル変数を追加することで、 + $ GOPATH`を設定できます。 シェル設定に従って、これを `+ .zshrc `または ` .bashrc +`ファイルに追加することができます。

まず、 `+ nano `またはお好みのテキストエディターで `〜/ .profile`を開きます。

nano ~/.profile

以下をファイルに追加して、 `+ $ GOPATH +`を設定します。

〜/ .profile

export GOPATH=$HOME/go

Goがツールをコンパイルしてインストールすると、それらは + $ GOPATH / bin +`ディレクトリに置かれます。 便宜上、ワークスペースの `+ / bin`サブディレクトリを 〜/ .profile`の ` PATH`に追加するのが一般的です:

〜/ .profile

export PATH=$PATH:$GOPATH/bin

これにより、システムの任意の場所でGoツールを使用してコンパイルまたはダウンロードしたプログラムを実行できます。

最後に、 `+ go `バイナリを ` PATH`に追加する必要があります。 これを行うには、行の末尾に「+ / usr / local / go / bin +」を追加します。

〜/ .profile

export PATH=$PATH:$GOPATH/bin:

+ / usr / local / go / bin`を + $ PATH`に追加すると、すべてのGoツールがシステムのどこからでも利用できるようになります。

シェルを更新するには、次のコマンドを発行してグローバル変数をロードします。

. ~/.profile

+ echo`コマンドを使用して出力を検査することで、 + $ PATH`が更新されたことを確認できます。

echo $PATH

ホームディレクトリに表示される `+ $ GOPATH / bin `が表示されます。 ` root `としてログインしている場合、パスに ` / root / go / bin +`が表示されます。

Output/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin::/usr/local/go/bin

`+ / usr / local / go / bin`のGoツールへのパスも表示されます。

Output/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/go/bin:/

Goの現在のバージョンを確認して、インストールを確認します。

go version

そして、次のような出力を受け取るはずです。

Outputgo version

ワークスペースのルートが作成され、 `+ $ GOPATH `環境変数が設定されたので、次のディレクトリ構造で将来のプロジェクトを作成できます。 この例では、リポジトリとして ` github.com +`を使用していることを前提としています。

$GOPATH/src///

例として、https://github.com/digitalocean/godo [+ https:// github.com / digitalocean / godo +]プロジェクトで作業している場合、次のディレクトリに保存されます。

$GOPATH/src///

このプロジェクト構造は、プロジェクトを `+ go get `ツールで利用可能にします。 また、後で読みやすくなります。 これを確認するには、 ` go get `コマンドを使用して ` godo +`ライブラリを取得します。

go get github.com/digitalocean/godo

これにより、 `+ godo `ライブラリのコンテンツがダウンロードされ、マシンに ` $ GOPATH / src / github.com / digitalocean / godo +`ディレクトリが作成されます。

ディレクトリを一覧表示することで、 `+ godo +`パッケージが正常にダウンロードされたかどうかを確認できます。

ll $GOPATH/src/github.com/digitalocean/godo

次のような出力が表示されます。

Outputdrwxr-xr-x 4 root root  4096 Apr  5 00:43 ./
drwxr-xr-x 3 root root  4096 Apr  5 00:43 ../
drwxr-xr-x 8 root root  4096 Apr  5 00:43 .git/
-rwxr-xr-x 1 root root     8 Apr  5 00:43 .gitignore*
-rw-r--r-- 1 root root    61 Apr  5 00:43 .travis.yml
-rw-r--r-- 1 root root  2808 Apr  5 00:43 CHANGELOG.md
-rw-r--r-- 1 root root  1851 Apr  5 00:43 CONTRIBUTING.md
.
.
.
-rw-r--r-- 1 root root  4893 Apr  5 00:43 vpcs.go
-rw-r--r-- 1 root root  4091 Apr  5 00:43 vpcs_test.go

この手順では、Goワークスペースを作成し、必要な環境変数を構成しました。 次のステップでは、コードを使用してワークスペースをテストします。

ステップ3-簡単なプログラムの作成

Goワークスペースをセットアップしたので、「Hello、World!」プログラムを作成します。 これにより、ワークスペースが適切に構成されていることを確認し、Goに慣れる機会を提供します。 実際のプロジェクトではなく、単一のGoソースファイルを作成しているため、これを行うためにワークスペースにいる必要はありません。

ホームディレクトリから、 `+ nano +`などのコマンドラインテキストエディターを開き、新しいファイルを作成します。

nano hello.go

新しいファイルにプログラムを記述します。

package main

import "fmt"

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

このコードは、 `+ fmt `パッケージを使用し、 ` Hello、World!`を引数として ` Println `関数を呼び出します。 これにより、プログラムの実行時に「 Hello、World!+」というフレーズが端末に出力されます。

`+ CTRL `キーと ` X `キーを押して、 ` nano `を終了します。 ファイルの保存を求められたら、「 Y 」を押してから「 ENTER +」を押します。

`+ nano +`を終了してシェルに戻ったら、プログラムを実行します。

go run hello.go

`+ hello.go +`プログラムは、ターミナルに次の出力を生成させます:

OutputHello, World!

この手順では、基本的なプログラムを使用して、Goワークスペースが適切に構成されていることを確認しました。

結論

おめでとうございます。 この時点で、UbuntuマシンにGoプログラミングワークスペースがセットアップされ、コーディングプロジェクトを開始できます!