演習1-4

演習1-3のプログラムを,rangeを使ったforループで書き直せ.

解答例

  1. package main
  2. import fmt "fmt"
  3. func main() {
  4. a := [5]int{5,7,9,3,1}
  5. sum := 0
  6. for i,e := range a {
  7. sum += e
  8. fmt.Printf("a[%d]=%d\n", i, e)
  9. }
  10. fmt.Printf("合計:%d\n", sum)
  11. }

解説

range節によるfor文(8行目~11行目)

  • このfor文は,配列やスライス,文字列,マップ,チャネルから受信した値の全要素についてイテレーション(繰り返し)をおこないます.上記の例では,配列aのインデックスと要素が,それぞれ順に変数 i,e に代入され,全ての要素について,sum+=e と fmt.Printf("a[%d]=%d\n", i, e) を実行します.
  • インデックスの値を使わない場合は,ブランク識別子(アンダーライン _ )を使うことができます.ブランク識別子を使うとどんな型の値でも代入でき,値を他に影響およぼすことなく破棄することができます.解答例(2)の8行目を参照してください.

解答例(2)

  1. package main
  2. import fmt "fmt"
  3. func main() {
  4. a := [5]int{5,7,9,3,1}
  5. sum := 0
  6. for _,e := range a {
  7. sum += e
  8. }
  9. fmt.Printf("合計:%d\n", sum)
  10. }