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

Go

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for masaki.kinoshita masaki.kinoshita
August 12, 2020
550

 Go

Avatar for masaki.kinoshita

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