Go言語   キーボードからの入力

ホーム   Goチュートリアル


Scan( )

fmt パッケージの Scan 関数は、ポインターを利用して、キーボードからの入力を受け取ります。

greet.go


package main

import "fmt"

func main() {
	
	var name string
	
	print("名前を入力してください: ")
	fmt.Scan(&name)
	
	println("こんにちは", name, "さん")
	
}
    

実行結果


名前を入力してください: 太郎
こんにちは 太郎 さん
    

コード説明


	var name string
	

キーボードからの入力を受け取る変数を用意しています。


	print("名前を入力してください: ")
	

println ではなく print とすると、ターミナルに文字列を出力したあとに自動的に改行されなくなります。


	fmt.Scan(&name)
	

fmt パッケージの Scan 関数は、キーボードから入力された文字列を string 型のポインターで指定された変数に格納します。Go 言語では、C 言語と違い、文字列型の変数が自動的にポインターになることはありません。このコードでは &name とすることによって、name 変数のアドレスを渡しています。

じゃんけんゲーム

今まで学んだことを利用して、じゃんけんゲームを作ってみました。

janken.go


package main

import ("fmt"
		"math/rand"
		"time"
		"strconv"
)

func main() {
	
	var you string
	
	for {
		print("グー:1、チョキ:2、パー:3、を数字で選んでください: ")
		fmt.Scan(&you)
		if you == "1" || you == "2" || you == "3" { break }
	}
	
	switch you {
	case "1":
		println("あなたはグーを出しました")
	case "2":
		println("あなたはチョキを出しました")
	case "3":
		println("あなたはパーを出しました")
	}
	
	rand.Seed(time.Now().Unix())
	number := rand.Intn(3) + 1
	computer := strconv.Itoa(number)
	
	switch computer {
	case "1":
		println("コンピュータはグーを出しました")
	case "2":
		println("コンピュータはチョキを出しました")
	case "3":
		println("コンピュータはパーを出しました")
	}
	
	switch {
	case you == computer:
		println("おあいこです")
	case you == "1" && computer == "2":
		println("あなたの勝ちです")
	case you == "2" && computer == "3":
		println("あなたの勝ちです")
	case you == "3" && computer == "1":
		println("あなたの勝ちです")
	default:
		println("コンピュータの勝ちです")
	}	
}
    

実行結果


グー:1、チョキ:2、パー:3、を数字で選んでください: 1
あなたはグーを出しました
コンピュータはグーを出しました
おあいこです
    

グー:1、チョキ:2、パー:3、を数字で選んでください: 2
あなたはチョキを出しました
コンピュータはパーを出しました
あなたの勝ちです
    

グー:1、チョキ:2、パー:3、を数字で選んでください: 3
あなたはパーを出しました
コンピュータはチョキを出しました
コンピュータの勝ちです
    

コード説明


		"strconv"
	

strconv は、文字列を数値に変換したり、数値を文字列に変換する関数が定義されているパッケージです。string convert(文字列変換)の略だと思えば覚えやすいでしょう。


	computer := strconv.Itoa(number)
	

strconv パッケージの Itoa 関数は、引数の整数値を文字列に変換します。

整数値から文字列へ変換
strconv.Itoa(100)
100 が "100" に変換されます
文字列から整数値へ変換
strconv.Atoi("100")
"100" が 100 に変換されます


2495 visits
Posted: Jun. 25, 2019
Update: Jun. 26, 2019

ホーム   Goチュートリアル   目次