fmt パッケージの Scan 関数は、ポインターを利用して、キーボードからの入力を受け取ります。
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 変数のアドレスを渡しています。
今まで学んだことを利用して、じゃんけんゲームを作ってみました。
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 関数は、引数の整数値を文字列に変換します。