golang

(2016/08/14〜2016/11/07)
  • Google製静的型付け言語
  • 処理速度が速いやらで最近人気
  • 最近勉強してる
  • よいなと思ったこと

  • :=演算子を使うと暗黙の型宣言となる
  • LLで鈍り切った体にちょうどいい
  • 構造体へのポインタを保持してると実体をもってなくても構造体の要素にアクセスできる
  • チュートリアル
  • 地味便利なのでは
  • 配列のsliceがある
  • list := old[1:4]
  • Pythonっぽくてよいぞ
  • ただしsliceされた配列は元配列への参照を持つ
  • [:]とか[:10]とかもできる
  • 連想配列
  • mapと呼ぶ
  • 宣言方法がキモイ…
  • var hoge map[string]int
  • チュートリアルだとmapに構造体突っ込んでるけど混乱しないのかしら
  • 関数も値
  • JavaScriptっぽくて好き
  • クラスの概念はない
  • ただし型にメソッドを持たせることができる
  • これを駆使してやっていく感じ?
  • ポインタレシーバの仕様が結構怠け者向けでウケる
  • https://go-tour-jp.appspot.com/methods/6
  • いいぞもっとやれって思う
  • ポインタレシーバには基本、ポインタを渡すので統一したほうがよさそう
  • Interfaceを宣言的に継承する必要はない
  • 宣言されているInterfaceを実装していればその型を名乗ることができる
  • これがダックタイピングカーッ!
  • いわゆるanyはinterface{}で表現できる
  • fmt.Printlnの引数の型指定もinterface{}になってる
  • Goroutine(ゴルーチン)なるものがある
  • Goのランタイムで管理される軽量なスレッド
  • 並列処理できる
  • 同じアドレス空間で実行されるので共有メモリへのアクセスは同期しなければいけない
  • 非同期がうまいこといくよう、言語仕様の時点でブロック処理等がきちんとしてるっぽい
  • 受信側と送信側で処理を待ってロックできる
  • 気をつけないとすぐデッドロックとかになりそう
  • 慣れないと全然読めないかも
  • A Tour of Go
  • チャンネル
  • Goroutineで立つスレッドとデータをやり取りするためのもの
  • これをうまく使うと非同期を同期的に扱える
  • 疑問

  • 型定義が変数名の後ろの理由を理解しきれてない
  • ブログで説明あったから読んだけどピンと来てない
  • Cでつらい思いしないとありがたみわからなそうな気がする(完全に勘)
  • 言語 Go Google

general(396)