0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

プログラミング超入門(6)〜GO言語〜

Last updated at Posted at 2021-03-16

#for文(繰り返し制御)
配列から要素を一つずつ取り出せるようになります。GO言語の繰り返し処理には、while文(データの個数がわからない時に使用する条件式)が無くシンプルにfor文というデータの個数分までループ構造を繰り返す処理のみになります。for スタート値; 継続条件; 増減式 { }スタート値は第一引数にあたり、繰り返し処理をスタートさせる値になります。変数名にi(indexやintegerの頭文字)が使われるのが一般的です。0からスタートとなるカウンタ変数(アクションの実行回数)を省略形**(:=)で代入し定義します。継続条件の部分は繰り返しをやめるまでの条件としてブール値を返す式を記述します。通常はiの値に関する式となり、式の値がfalseとなったら繰り返しをやめ、{ }の中から抜けることになります。例としてi <= 4; i < len(aprices)を記述します。増減式は1回の繰り返し処理で1ずつ増やすインクリメント演算子「++」を使用します「i++」**は、「i += 1」の略です。{ }波括弧の中には繰り返したい処理を書き、ループの条件を判定させます。(繰り返し処理の終わり)まずは、0からスタートさせて5回で終わらせる処理を記述してみます。

loops.go
package main

import "fmt"

func main() {
    for i := 0; i <= 4; i++ {
        fmt.Println(i)
    }
}

##実行結果

0
1
2
3
4

「変数iを用いた処理を行って、終わったらiを増やす。iの値が条件に達していない場合は処理を繰り返す。」では次に、スライスでpricesから見ている配列のi番目の要素の値を取り出して、文字列に埋め込み出力させてみます。

shops.go
package main

import "fmt"

func main() {
    prices := []int{99, 122, 233, 456, 1023}
    
    for i := 0; i < len(prices); i++ {
        fmt.Printlf("%d円\n", prices[i])
    }
}

##実行結果

99円
122円
233円
456円
1023円

#スライス型で文字列の配列を定義
goods := []string{"割り箸","紙コップ","ゴミ袋","テーブルクロス","大皿"}を、上記のshopsに追加し書式fmt.Printf("%s: %d円\n", goods[i], prices[i])に書き加えます。更に一つずつ小計も同時に表示できるよう記述してみます。for文の前に変数sumを作りsum := 0を入れ、for文の中の処理を繰り返しごとにsumの値が増えるようsum += prices[i] fmt.Printf("%s: %d円 | 小計: %d円\n", goods[i], prices[i], sum)に修正しfmt.Printf("総計: %d円\n", sum)で繰り返し終了後にsumの値を表示させてみます。

shops.go
package main

import "fmt"

func main() {
    prices := []int{99, 122, 233, 456, 1023}
    goods := []string{"割り箸","紙コップ","ゴミ袋","テーブルクロス","大皿"}
    sum := 0

    for i := 0; i < len(prices); i++ {
        sum += prices[i]
        fmt.Printf("%s: %d円 | 小計: %d円\n", goods[i], prices[i], sum)
    }
    fmt.Printf("総計: %d円\n", sum)
}

##ファイルを再ビルドして実行

割り箸: 99円 | 小計: 99円
紙コップ: 122円 | 小計: 221円
ゴミ袋: 233円 | 小計: 454円
テーブルクロス: 456円 | 小計: 910円
大皿: 1023円 | 小計: 1933円
総計: 1933円

#2次元配列上での繰り返し処理
魚釣りの大会が開かれたと仮定して、釣った魚3匹の大きさ(cm)の合計を「配列の配列」である2次元配列を使って各参加者の平均サイズを出力してみます。尚、釣れなかった人は0でカウントします。

fishsaverage.go
package main

import "fmt"

func main() {
    average := [][3]int{
        {23, 25, 45}, {42, 0, 0}, {12, 33, 18},
        {32, 35, 14}, {39, 45, 0}}

    for i := 0; i < len(average); i++ {
        sum := 0
        for b := 0; b < 3; b++ {
            sum += average[i][b]           
        }
        fmt.Printlf("参加者%d: 平均サイズ%dcm\n", i+1, sum/3)
    }
}

##実行結果

参加者1: 平均サイズ31cm
参加者2: 平均サイズ14cm
参加者3: 平均サイズ21cm
参加者4: 平均サイズ27cm
参加者5: 平均サイズ28cm

変数averageに代入しているのはスライスで、そのスライスが見る配列要素はint{ }内にある要素{23, 25, 45}のような配列です。for文を定義するには、まず外枠の配列について変数iで繰り返すごとに、変数bで内側の配列について繰り返させます。次に各iに対し、average[i]が持っている3つの要素の平均をさせます。参加者の番号をi+1で出力させます。処理が終わるとfor文の一番最初に戻り、iが1増えて、i<len(average)がtrueであれば、新しいiの値で、bが0からの繰り返しを始めます。

←前回の記事 次の記事へ→

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?