Go言語   パッケージ

ホーム   Goチュートリアル


Goでは、処理(関数)をパッケージにまとめることになっています。Goには最初から便利なパッケージがたくさん用意されています。この章では、よく使う fmt パッケージと math/rand パッケージを紹介します

math/rand

math/rand パッケージは、乱数を扱うための処理(関数)がまとめられたパッケージです。

dice.go


package main

import "math/rand"
import "time"

func main() {
	rand.Seed(time.Now().Unix())
	println("サイコロの目は", rand.Intn(6) + 1, "です")
}
    

このコードを実行すると、「サイコロの目は 6 です」のように表示されます。数字の部分は実行するたびに1〜6のランダムな数字になります。

コード説明


import "math/rand"
import "time"
    

import というキーワードで、math/rand パッケージと time パッケージを読み込んでいます。


println("サイコロの目は", rand.Intn(6) + 1, "です")
    

rand.Intn( ) で、rand パッケージの中の Intn 処理(関数)を呼び出しています。Intn 関数は、0 から ( ) の中で指定された数値の一つ手前までの、ランダムな整数を返します。+ 1 で、rand 関数が返した 0 から 5 までの値に 1 を足しています。結果として 1 から 6 までのランダムな整数が得られることになります。

println 関数は main パッケージに含まれている関数です。println は、( ) の中に指定した値を、ターミナルに表示します。( ) の中には、カンマで区切って複数の値を指定することができます。指定されたそれぞれの値は、半角スペースで区切られてターミナルに表示されます。

main パッケージの println 関数は小文字で始まっていますが、rand パッケージの Intn 関数は大文字で始まっています。小文字で始まっている関数は、その所属するパッケージ内でしか使えませんが、大文字で始まる関数は、import キーワードを使って読み込めば、違うパッケージ内でも使えます。


rand.Seed(time.Now().Unix())
    

rand パッケージの Intn 関数は、実際には乱数表という仕組みで決められた値を返しています。どういうことかというと、1 回目は○という値、2 回目は ○という値と決まっているということです。これを本当のランダムな値を返すようにするのが、このコードです。このコードはランダムな値を返す関数を呼び出す前に、記述しておかなければならないと、丸覚えしておきましょう。import キーワードで time パッケージを読み込んだのは、この time パッケージの Now().Unix() 関数を使うためです

fmt

fmt は、書式を指定して、ターミナルに文字列を表示したり、ターミナルから文字列を読み込めたりするパッケージです。fmt は、format(フォーマット、書式)の略だと考えれば覚えやすいでしょう。

format.go


package main

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

func main() {
	rand.Seed(time.Now().Unix())
	println("サイコロの目は", rand.Intn(6) + 1, "です")
	fmt.Println("サイコロの目は", rand.Intn(6) + 1, "です")
	fmt.Printf("サイコロの目は %d です\n", rand.Intn(6) + 1)
	fmt.Printf("サイコロの目は %04d です\n", rand.Intn(6) + 1)
	fmt.Printf("サイコロの目は %4d です\n", rand.Intn(6) + 1)
	fmt.Printf("サイコロの目は %-4d です\n", rand.Intn(6) + 1)
}
    

実行結果


サイコロの目は 6 です
サイコロの目は 6 です
サイコロの目は 3 です
サイコロの目は 0002 です
サイコロの目は    2 です
サイコロの目は 4    です
    

コード説明

  1. import は、パッケージのひとつずつを import で読み込む方法と、今回の例のように、( ) と改行を使って、一つの import で、複数のパッケージを読み込む方法があります。
  2. main パッケージの println 関数の代わりに、fmt パッケージの Println 関数を使っても、表示結果は同じです。
  3. fmt パッケージでは、Printf 関数を使って、書式を指定して文字列を表示することができます。3回目のサイコロでは、%d のところに、rand.Intn(6) + 1 の値が表示されます。
  4. 4回目のサイコロでは、%04d のところに、rand.Intn(6) + 1 の値が、4 桁幅で表示され余白が 0 で埋まります。
  5. 5回目のサイコロでは、%4d のところに、rand.Intn(6) + 1 の値が、4 桁幅で表示されますが、余白を 0 で埋めることはありません。
  6. 6回目のサイコロでは、%-4d のところに、rand.Intn(6) + 1 の値が、左寄せの 4 桁幅で表示されます。


2496 visits
Posted: Jun. 18, 2019
Update: Jun. 19, 2019

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