# chapter3section01繰り返す(for文)
# for文の基本
参考コード
```go
package main
import "fmt"
func main() {
prices := []int{98, 125, 232, 147, 486}
for i := 0; i < len(prices); i++ {
fmt.Printf("%d円\n", prices[i])
}
}
実行結果
98円
125円
232円
147円
486円
```
for文で始まる繰り返し条件は、数をカウントするために変数を用いて、 ①「i:= 0」②「; i < len(prices);」③「 i++」の3つの記述から成立する。
①は変数iを宣言しカウントを始める値「0」を代入している。(:=は変数に代入する為の省略形の式)
②は繰り返しをやめるまでの条件としてブール値を繰り返す「式」を書いています。通常は変数iの値に関する式となる。<u>**式の値がfalseになったときに繰り返しをやめ、for文の{}から抜ける**</u>こととなる。②では配列の最後の要素までとなるので、len(prices)で全要素を求めて「iが配列の要素数より小さくなったら」、つまり「iが配列の要素数に等しくなったら」処理をやめます。最後の要素のインデックスは「len(prices)-1」となるので、「iが配列の要素数に等しくなったら」もう要素数が取り出せなくなるためである。
③は繰り返しごとにiの値をどう変化させるかを式で表している。「i++」は「i+=1」の略である。<u>**「++」はインクリメント演算子**</u>(インクリメントは増加という意味)と呼ぶ。
これらをまとめると①~③は「変数iを用いた処理を行い、終わったらiを増やしてiの値が条件に達していない場合は処理を繰り返す」ことを行っている。
上記のコードで行っている処理はスライスpricesから見ている配列のi番目の要素の値を取り出し、文字列に埋め込んで出力することである。
# 文字列の配列
整数の配列だけではなく、文字列の配列を作ることも可能である。
```go
package main
import "fmt"
func main() {
prices := []int{98, 125, 232, 147, 486}
items := []string{"消しゴム", "ボールペン", "ノート", "付箋紙", "ボールペン"}
for i := 0; i < len(prices); i++ {
fmt.Printf("%s: %d円\n", items[i], prices[i])
}
}
実行結果
消しゴム: 98円
ボールペン: 125円
ノート: 232円
付箋紙: 147円
ボールペン: 486円
```
「<u>**%s**</u>」で指定すれば<u>**文字列の中に文字列を埋め込む事が可能**</u>である。上記のコードでは複数の文字列を埋め込んでいる。
さらに、結果を書き出す以外の処理として、一つずつ書き出すたびに小計も一緒に表示していく。
以下のコードをそれぞれ追加していく。
・変数sumの作成。sumはpricesの中身を足していく関数である。
`sum :=0`
・for文の中の処理を修正。繰り替えずごとにsumの値を増やしていき、3つの式を文字列中に埋め込む
```go
sum += prices[i]
fmt.Printf("%s: %d円 | 小計:%d円\n",items[i],prices[i],sum)
```
・for分を抜けてから総計としてsumの値を書き出す。
`fmt.Printf("総計: %d円\n",sum)`
以下、追加後コード
```go
package main
import "fmt"
func main() {
prices := []int{98, 125, 232, 147, 486}
items := []string{"消しゴム", "ボールペン", "ノート", "付箋紙", "ボールペン"}
sum := 0
for i := 0; i < len(prices); i++ {
sum += prices[i]
fmt.Printf("%s: %d円| 小計:%d円\n", items[i], prices[i], sum)
}
fmt.Printf("総計: %d円\n", sum)
}
実行結果
消しゴム: 98円| 小計:98円
ボールペン: 125円| 小計:223円
ノート: 232円| 小計:455円
付箋紙: 147円| 小計:602円
ボールペン: 486円| 小計:1088円
総計: 1088円
```
# 2次元配列上での繰り返し。
複数の受験者が3回試験を受けたときの平均点を算出して表示するプログラムを作成していく。
コード
変数scoresに代入しているのはスライスである。そのスライスが見る配列の要素は要素数3つの配列になっている。
###### tags:`1日で基本が身につくGo言語`