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になるのでご注意ください。
ここまでお読みいただきありがとうございました!
参考
この記事が気に入ったらサポートをしてみませんか?