Gopher道場 2回目

   · ☕ 3 min read
🏷️
  • #go
  • 前回課題

    • Read.me
      • go get するように使い方をかく
    • 構造体の場合は、レシーバーは基本的にポインタにするのが良い
      • interface が出てきたときに当たりにくい
      • 毎回コピーが
    • mainパッケージ以外は外に出ないようにする
    • ファイルのクローズ忘れ
    • 必ずNew~関数で初期化する必要はない
    • package名と関数名が被らないようにすると良い
      • converter.new 関数など
      • converter.newConverter はあまり良くない

    講義内容・ポイント

    • map
      • キーを複数使いたい時は構造体とする
      • ゼロ値が大事 ワードカウント
    1
    2
    3
    
        // 削除されていることを確認
        n, ok = m["z"] // ゼロ値とfalseを返す
        println(n, ok)
    
    • コンポジット型を要素とする

      • struct の中に struct -> JSON化するときに良い
    • 型エイリアス

      • 主にリファクタリングに使う
      • 呼び方を変えたい、という意味合いで使われる
      • go1.9 からできた net context の話
      • ビルドのときに、エイリアス
      • あまり使わない。ライブラリの回収などで、古いパッケージの移行時に役立つ。
    • 関数

      • 型は後ろにかく。Cとは異なる
        • => Goは、型はどんな時でも後ろに書く
      • error を _ で省略すると、レビューでギッタギタにされる
      • 戻り値にも名前をつけられる return で返される
      • 値の入れ替えができる
        • x, y = y, x
      • ポインタ型は、その実態のメソッドを使用できる
    • パッケージ

      • ライブラリ

        • main関数のないGoプログラム
      • パッケージ変数の使用は最低限にしておく

      • ユニバーススコープ

        • main関数の main などは、ユニバーススコープである。上書き可能。
      • init関数

        • 特別な場合でない限りは使用しない。
        • 自動生成の時などは便利で使用されることがある。 k8sのコードなど。
      • goget が便利で、Goが流行った理由とも言える

      • C言語や以前のVerでは、Makefile を使用していた。

      • modules (vgoと開発段階では呼ばれていた。)

        • 使用するべき

        • ベンダリングという物を以前を使用していた、必要なくなった

        • goinstall(後のgo get) Makefile より利便性が向上した

        • gopkg.in go get で解決できなかったバージョンの調整を正してくれる

        • ベンダリング go modulesをオンにしなければ、まだ有効

          • gopath より有効
          • スナップショットを保持することで、ビルドの再現性を担保できる 配布時に便利
        • glideがよく使われていた

        • depやっていき宣言

        • その半年後なぜかすぐに vgo が作られた

          • moduleの概念導入
            • バージョン漬けを行う単位 
            • go.mod を使用
            • semver セマンティックバージョニング
              • semverで自分のライブラリを管理しよう
          • Minimal Version Selection

    宿題

    - 1. io.Readerとio.writeの重要性を調査
    - 2. テストか書いてみる テストヘルパー
    - インターフェース、抽象化のところを読む
    
    Share on

    whasse
    WRITTEN BY
    whasse
    Web Developer