前書き

「Hello、World!」プログラムは、コンピュータープログラミングの古典的かつ古くからの伝統です。 これは初心者向けのシンプルで完全な最初のプログラムであり、環境が適切に構成されていることを確認するのに適した方法です。

このチュートリアルでは、Goでこのプログラムを作成する方法を説明します。 ただし、プログラムをより面白くするには、従来の「Hello、World!」プログラムを変更して、ユーザーに名前を尋ねるようにします。 その後、グリーティングで名前を使用します。 チュートリアルを完了すると、実行すると次のようなプログラムが作成されます。

OutputPlease enter your name.

Hello, Sammy! I'm Go!

前提条件

このチュートリアルを開始する前に、https://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-go [local Go開発環境]コンピュータにセットアップします。 これらのチュートリアルのいずれかに従って、これを設定できます。

[[step-1—writing-the-basic-“hello-world-”-program]]
=== ステップ1-基本的な「Hello、World!」プログラムの作成

「Hello、World!」プログラムを作成するには、 `+ nano +`などのコマンドラインテキストエディターを開き、新しいファイルを作成します。

nano hello.go

ターミナルウィンドウでテキストファイルが開いたら、プログラムを入力します。

hello.go

package main

import "fmt"

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

コードのさまざまなコンポーネントを分類しましょう。

`+ package `は、このファイルが属するコードバンドルを定義するGo _keyword_です。 フォルダーごとに1つのパッケージしか存在できず、各 ` .go `ファイルはファイルの先頭で同じパッケージ名を宣言する必要があります。 この例では、コードは ` main +`パッケージに属します。

`+ import `はGo _keyword_で、このファイルで使用する他のパッケージをGoコンパイラに指示します。 ここでは、標準ライブラリに付属している ` fmt `パッケージをインポートします。 ` fmt +`パッケージは、開発時に役立つフォーマットと印刷の機能を提供します。

`+ fmt.Println `はGo _function_で、 ` fmt +`パッケージに含まれており、画面にテキストを印刷するようコンピューターに指示します。

`+ fmt.Println `関数の後には、引用符で囲まれた `” Hello、World! “`のような一連の文字が続きます。 引用符内にある文字は、_string_と呼ばれます。 ` fmt.Println +`関数は、プログラムの実行時にこの文字列を画面に出力します。

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

これで、プログラムを試すことができます。

ステップ2-Goプログラムの実行

「Hello、World!」プログラムを作成したら、プログラムを実行する準備が整います。 `+ go +`コマンドを使用して、作成したファイルの名前を続けます。

go run hello.go

プログラムが実行され、次の出力が表示されます。

OutputHello, World!

実際に何が起こったのかを見てみましょう。

Goプログラムは、実行する前にコンパイルする必要があります。 ファイルの名前(この場合は「+ hello.go 」)で「 go run」を呼び出すと、「+ go +」コマンドがアプリケーションをコンパイルし、結果のバイナリを実行します。 _compiled_プログラミング言語で書かれたプログラムの場合、コンパイラはプログラムのソースコードを取得し、別のタイプの低レベルコード(マシンコードなど)を生成して実行可能プログラムを生成します。

Goアプリケーションには、 `+ main `パッケージと、アプリケーションのエントリポイントとして機能する正確に* 1 *個の ` main()`関数が必要です。 ` main +`関数は引数を取らず、値を返しません。 代わりに、パッケージを実行可能パッケージとしてコンパイルする必要があることをGoコンパイラに伝えます。

コンパイルされると、コードは `+ main `パッケージに ` main()`関数を入力して実行されます。 ` fmt.Println `関数を呼び出して、 ` fmt.Println(” Hello、World! “)`の行を実行します。 そして、 ` Hello、World!`の文字列値は関数に_passed_されます。 この例では、文字列 ` Hello、World!+`はメソッドに渡される値であるため、_argument_とも呼ばれます。

`+ Hello、World!+`の両側にある引用符は、Goに文字列の始まりと終わりを伝えるために使用するため、画面に出力されません。

このステップでは、Goを使用して実用的な「Hello、World!」プログラムを作成しました。 次のステップでは、プログラムをよりインタラクティブにする方法を探ります。

ステップ3-ユーザー入力のプロンプト

プログラムを実行するたびに、同じ出力が生成されます。 このステップでは、ユーザーに名前を入力するようにプログラムに追加できます。 次に、出力でそれらの名前を使用します。

既存のプログラムを変更する代わりに、 `+ nano `エディターで ` greeting.go +`という新しいプログラムを作成します。

nano greeting.go

まず、次のコードを追加します。これにより、ユーザーに名前を入力するように求められます。

greeting.go

package main

import (
   "fmt"
)

func main() {
 fmt.Println("Please enter your name.")
}

もう一度、 `+ fmt.Println +`関数を使用して、画面にテキストを印刷します。

次に、強調表示された行を追加して、ユーザーの入力を保存します。

greeting.go

package main

import (
   "fmt"
)

func main() {
 fmt.Println("Please enter your name.")

}

+ var name string +`行は、 `+ var + _keyword_を使用して新しい変数を作成します。 変数に「+ name 」という名前を付けると、タイプは「 string +」になります。

次に、強調表示された行を追加して、ユーザーの入力をキャプチャします。

greeting.go

package main

import (
   "fmt"
)

func main() {
 fmt.Println("Please enter your name.")
 var name string

}

+ fmt.Scanln +`メソッドは、新しい行または( `+ \ n +)文字で終わるキーボードからの入力を待つようにコンピューターに指示します。 これによりプログラムが一時停止し、ユーザーは必要なテキストを入力できます。 ユーザーがキーボードの `+ ENTER `キーを押すと、プログラムは続行します。 次に、「 ENTER +」キーストロークを含むすべてのキーストロークがキャプチャされ、文字列に変換されます。

プログラムの出力でこれらの文字を使用したいので、「+ name +」と呼ばれる文字列_variable_に文字を「書き込む」ことでそれらの文字を保存します。 Goは、プログラムの実行が完了するまで、その文字列をコンピューターのメモリに保存します。

最後に、プログラムに次の強調表示された行を追加して、出力を印刷します。

greeting.go

package main

import (
   "fmt"
)

func main() {
 fmt.Println("Please enter your name.")
 var name string
 fmt.Scanln(&name)

}

今回は、 + fmt.Println +`メソッドを再度使用する代わりに、 `+ fmt.Printf +`を使用しています。 `+ fmt.Printf +`関数は文字列を受け取り、特別な印刷_verbs_、( `+%s +)を使用して、 `+ name +`の値を文字列に挿入します。 これは、Goが_string補間_をサポートしていないためです。これにより、変数に割り当てられた値を取得して、文字列内に配置できます。

保存し、 `+ CTRL + X `を押して ` nano `を終了し、ファイルを保存するよう求められたら ` Y +`を押します。

次にプログラムを実行します。 名前の入力を求められますので、名前を入力して「+ ENTER」を押します。 出力は、期待どおりではない場合があります。

OutputPlease enter your name.
Sammy
Hi, Sammy
! I'm Go!

`こんにちは、サミーの代わりに! 私はGo! `です。名前の直後に改行があります。

プログラムは、プログラムに続行を指示するために押した「+ ENTER 」キーを含む、すべてのキーストロークをキャプチャしました。 文字列で、「 ENTER」キーを押すと、新しい行を作成する特殊文字が作成されます。 プログラムの出力は、あなたがそれをするように命じたとおりにしています。その新しい行を含む、入力したテキストが表示されます。 出力が期待したものではありませんが、追加の機能で修正できます。

エディターで `+ greeting.go +`ファイルを開きます:

nano greeting.go

プログラムで次の行を見つけます。

greeting.go

...
fmt.Scanln(&name)
...

その直後に次の行を追加します。

greeting.go

これは、Goの標準ライブラリ `+ strings `パッケージの ` TrimSpace `関数を、 ` fmt.Scanln `でキャプチャした文字列に対して使用します。 ` strings.TrimSpace `関数は、文字列の先頭と末尾から改行を含むスペース文字を削除します。 この場合、 ` ENTER +`を押したときに作成された文字列の末尾にある改行文字が削除されます。

`+ strings +`パッケージを使用するには、プログラムの一番上でインポートする必要があります。

プログラムで次の行を見つけます。

greeting.go

import (
   "fmt"
)

次の行を追加して、 `+ strings +`パッケージをインポートします。

greeting.go

import (
   "fmt"

)

プログラムには、次のものが含まれます。

greeting.go

package main

import (
       "fmt"
       "strings"
)

func main() {
   fmt.Println("Please enter your name.")
   var name string
   fmt.Scanln(&name)
   fmt.Printf("Hi, %s! I'm Go!", name)
   name = strings.TrimSpace(name)
}

保存して `+ nano `を終了します。 ` CTRL + X `を押し、次にファイルを保存するように求められたら ` Y +`を押します。

プログラムを再度実行します。

go run greeting.go

今回は、名前を入力して `+ ENTER +`を押すと、期待どおりの出力が得られます。

OutputPlease enter your name.

Hi, Sammy! I'm Go!

これで、ユーザーからの入力を取得して画面に印刷するGoプログラムができました。

結論

このチュートリアルでは、ユーザーからの入力を受け取り、結果を処理し、出力を表示する「Hello、World!」プログラムを作成しました。 作業する基本的なプログラムができたので、プログラムをさらに拡張してみてください。 たとえば、ユーザーのお気に入りの色を尋ね、そのお気に入りの色が赤であることをプログラムに伝えます。 この同じ手法を使用して、単純なMad-Libプログラムを作成することもできます。