見出し画像

Golang_forとifと処理時間の計測 #462

Golangのforとifについて簡単にまとめつつ、処理時間の計測方法についても触れたいと思います。といってもこの辺はJavaScript等の他言語と似ているので、難しくはありません。

for文の基本構文

基本は以下です。

for 初期化ステートメント; 条件式; 後処理ステートメント {
    // ループ処理
}

例として、1から10までの数字を足し合わせるコードです。

sum := 0
for i := 0; i < 10; i++ {
    sum += i
}
fmt.Println(sum)

初期化と後処理ステートメントは省略できます。

for 条件式 {
    // ループ処理
}

条件式の省略できますが、無限ループになるので停止条件を付ける必要があります。

for {
    // ループ処理
    if 条件式 {
        break
    }
}

forはrangeを使ってスライスなどをループすることもできますし、スコープに名前をつけて明示的にbreakしたりもできます(この辺はそのうち)。

ifの基本構文

ifステートメントでもforのように、条件の前に簡単なステートメントを書けます。これはPython等には無いので面白いですね。

if 簡易ステートメント; 条件式 {
   // 条件式がtrueの場合の処理
   // 簡易ステートメントで宣言した変数はこの中でのみ有効
}

例として、べき乗を計算してそれがリミット未満なら計算結果を、リミット以上ならリミットを返すコードです。

func pow(x, n, lim float64) float64 {
	if v := math.Pow(x, n); v < lim {
		return v
	}
	return lim
}

簡易ステートメントは省略可能です。

if 条件式 {
   // 条件式がtrueの場合の処理
}

処理時間の計測

Golangで処理時間を簡易的に計算する方法で、timeパッケージを使う方法があります。

以下はtime.Now()を宣言した時刻からの経過時間を測り、ミリ秒単位で表示するコードです。

package main

import (
	"fmt"
    "time"
)

func main() {
	s := time.Now()
	fmt.Println(Sqrt(2))
	elapsed := time.Since(s)
	fmt.Printf("process time: %d ms\n", elapsed.Milliseconds())
}

シンプルでいいですね。
ただし、公式チュートリアルである「A Tour of Go」の環境では時刻が固定されているらしく、この方法では常に経過時間が0になるのでご注意ください。


ここまでお読みいただきありがとうございました!

参考


この記事が気に入ったらサポートをしてみませんか?