勉強部屋‎ > ‎Go 1‎ > ‎

演習1-4

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

解答例

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

解説

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.  
  7.     for _,e := range a {
  8.         sum += e
  9.     }
  10.     fmt.Printf("合計:%d\n", sum)
  11. }
ċ
1-4-1-sum.go
(0k)
Tetsuo Tanaka,
2012/04/29 5:42
ċ
1-4-2-sum.go
(0k)
Tetsuo Tanaka,
2012/04/29 5:43
Comments