Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Go

masaki.kinoshita
August 12, 2020
510

 Go

masaki.kinoshita

August 12, 2020
Tweet

Transcript

  1. Go言語のメリット - 静的コード分析
 - コードを実行せずに行なう検証
 
 - 組み込みテストおよびプロファイリングフレームワーク - テスト駆動開発

    - UNIXのパイプライクチャネルの概念に基づく軽量のマシンコード言語 - こんな感じ seq(10) | fizzbuzz | stdout - 高速コンパイル機能 - Go言語から機械語に直接コンパイルする - Generics、継承、例外処理、while文やdo-whileがない - 安全性が高いシンプルな構造を保つ。 - 初心者でも理解しやすい、コード編集が用意、コードエラーが容易に理解できる
  2. - 継承がない
 - classがない。拡張し辛い。java、scala脳だとハマる
 - シンプルな構造にするため
 - genericsがない - メソッドの引数に特定の型を決め打ちしないといけない→型クラスが使えない

    - 同じような処理をつくるのにわざわざ、型の異なったものを作ったりする必要がある - セキュアなメモリ管理を達成するために切り捨てられた機能 - ソースファイルに名前空間がない - scalaみたいにファイル単位でimportしてメソッドを使ったりできない - package単位でimportする - 同じpackage内に同じメソッド名は作れない - 標準関数が貧弱 - JavaでいうLinkedHashMapのように順番を保証したmapを作れない - 大体自作かパッケージを探すことが多い Go言語のデメリット
  3. 例外処理 - errors.New - throw e的なやつ - https://play.golang.org/p/L9AfvW1UOMu - fmt.errorf

    - Scalaでいうf補完子 - https://play.golang.org/p/4FDlKp_0tPk - 複数のエラーハンドリング - https://play.golang.org/p/eLSp9qYrqyy
  4. testing - テストコードです - https://play.golang.org/p/aM67XOsGs-Z - テスト成功 - テスト失敗 $

    go test -v === RUN TestHello --- PASS: TestHello (0.00s) hello_test.go:15: TestHello終了 PASS ok _/C_/workspace/tech_do/hello 0.061s $ go test --- FAIL: TestHello (0.00s) hello_test.go:12: 実際: こんにちは、筋肉くん! 理想: こんにちは、鈴木くん! ! hello_test.go:15: TestHello終了 FAIL exit status 1 FAIL _/C_/workspace/tech_do/hello 0.042s
  5. FIN