0805

LOGS

  • 引き続き golang の勉強をする
  • ちょっと間が空いたので正直殆ど覚えていないので,入門としてドットインストールをやっている
  • 1ヶ月で1200円ちょっとなんでまぁいいかなと
  • 今月ガっとやってやめる
  • 以前もやっていたのでそっちを読んでも良いかも

    • 今日は配列,スライスから

      // 配列: 基本定義
      var scores [3]int
      // 初期化も
      var scores [3]int = [3]{1, 2, 3}
      // 省略1
      var scores = [3]int{1, 2, 3}
      // 省略2
      scores := [3]int{1, 2, 3}
      // 要素数自明のとき
      scores := [...]int{1, 2, 3}
      
      // スライス: 基本定義
      scores := []int{1, 2, 3}
      // 要素の追加(複数追加)
      scores = append(scores, 100, 60)
      
      • 配列は後から要素の追加はできないが,スライスなら出来る
      • 要素数が変化しないなら配列のほうが処理が早いが,変更することが多いので,一般的にはスライスを使うことが多い
      • スライスにスライスを追加する
      moreScores := []int{60, 75, 82, 40, 55}
      scores = append(scores, moreScores...)
      
      • スライスから要素を抽出
        • 結果は配列になる
      // 1番目から3番目まで抽出
      fmt.Println(moreScores[1:3]) // [75 82]
      // 最初から2番目まで抽出
      fmt.Println(moreScores[:2]) // [60 75]
      // 3番目から最後まで抽出
      fmt.Println(moreScores[3:]) // [40 55]
      // 全部抽出
      // fmt.Println(moreScores) と一緒
      fmt.Println(moreScores[:]) // [60 75 82 40 55]
      
      • スライスから一部抽出したものを サブスライス というが,サブスライスの値を変更すると,下のスライスの値も,サブスライスを使用した値も変更されることに注意
        • サブスライスは,元のスライスを参照しているから
        • なのでスライスにスライスを追加した場合でも,影響は受ける
        • なるほど
    • ループ処理

      scores := []int{70, 90, 80}
      
      for i := 0; i < 3; i++ {
        fmt.Println(i, scores[i])
      }
      
      // こうも書ける
      for i, score := range.scores {
        fmt.Println(i, scores[i])
      }
      
      // i(インデックス)を使わない場合(値だけ欲しい場合)
      for _, score := range.scores {
        fmt.Println(score)
      }
      
    • マップ

      • 要は連想配列
      • 書き方: map[key の型]値の型
      var scores map[string]int
      // 最初に領域を確保する必要がある
      scores = make(map[string]int)
      scores["english"] = 80
      scores["math"] = 90
      
      // 一気に宣言と領域確保も出来る
      var scores map[string]int = make(map[string]int)
      // 省略形
      var scores = make(map[string]int)
      // 宣言と初期化(make を使わなくても良い)
      scores := map[string]int{
        "engligsh": 80,
        "math":     70,
      }
      
      • ※ map の初期化では,ケツカンマ必須で,上記の math の値 70 の後ろのカンマがないとエラーになる
      • map で要素を追加する場合は,新たなキー名で値を指定すれば良い
      scores["physics"] = 90
      
      • また削除する場合は delete 関数
      delete(scores, "math")
      
      • さらに,存在しないキーにアクセスするとエラーにならず 0 となる(おそらくint型の要素にアクセスしたから?)
        • string型の場合は ""空文字列が表示された

results matching ""

    No results matching ""