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

cocone Teck Talk Vol.1 -Java開発者のGoプロジェクト1年の振り返り

cocone
August 17, 2021

cocone Teck Talk Vol.1 -Java開発者のGoプロジェクト1年の振り返り

Go?Projectアサイン
Goという壁
GoとJavaの差
Goと仲良く慣れるまでの道のり
まだ慣れないGoのところ
GoでGo!Go!Go!

cocone

August 17, 2021
Tweet

More Decks by cocone

Other Decks in Programming

Transcript

  1. 林 賛昊(イム チャノ)
 サーバー/ポケコロツイン開発リーダー
 職務経歴
 ・NHN Japan株式会社(現Line) 
 ・cocone株式会社 


    ・NC Japan株式会社 
 趣味
 Outdoor系(キャンプ、登山、運動) 
 社内でストラックアウトができた! 
 blackpink

  2. 目次
 3 • Go? プロジェクトアサイン
 • Goという壁
 • GoとJavaの差
 •

    Goと仲良く慣れるまでの道のり
 • まだなれないGoのところ
 • GoでGo!Go!Go!

  3. Goの特徴
 8 • 早い
 ◦ コンパイル、起動が秒速!!
 ◦ 処理スピード(Go:機械語、Javaはバイトコード)
 • メモリ管理をGoで行う


    • モジュールだけで動く
 • goroutine軽量スレッド処理(channel)
 • シンプルで使いやすい

  4. Goという壁 - ポインター型、バリュー型
 9 • ポインター型
 ◦ ポインターで参照する
 ◦ *StructA,

    []*StructB
 ◦ structA := &StructA{}
 • バリュー型
 ◦ 値をコピーして参照する
 ◦ StructA、[]StructB
 ◦ structA := StructA{}
 • Map / Sliceはポインター型のみ

  5. Goという壁 - タイプの厳格さ
 10 • タイプの厳格さ
 ◦ int / int8

    / int16/ int32 / Int64, (uintprt)
 ※int : OSやCPUなどの実装系に依存した

  6. GoとJavaの差 - interface / interface{}
 14 • interface / interface{}


    ◦ inteface
 ▪ Go, Java : 概念
 ◦ interface{}
 ▪ Java:interface型はない。Objectに近い
 • Object → super class
 ▪ Go:型(Data Type)
 • interface{} → 他のデータタイプと無関係
 • 全てのデータタイプが入れる

  7. GoとJavaの差 - その他
 15 • multiple return value
 ◦ Goで一番嬉しい機能


    • package
 ◦ Goはクラスの概念がないため、package単位になる
 • 使わない変数・importはコンパイルエラーになる

  8. まだなれないGoのところ
 
 17 • 暗黙的な処理(型推論)
 ◦ param := 100 ->

    var param int = 100
 ◦ var sliceParam []string -> nil だが初期化される
 • primitive typeのアドレス参照
 ◦ count := 100 abc := &count
 • 関数型変数
 ◦ func sampleFunction(paramFunc valFunc() rtn)
 

  9. Q&A / Tips
 21 • https://play.golang.org/ (web codingツール)
 • https://golang.org/ref/spec(blog)


    ◦ https://www.ymotongpoo.com/works/goblog-ja
 • https://github.com/avelino/awesome-go(library)
 • IDE
 ◦ Intellij-go plugin, vscode, Go Land, Atom