The tour of go をやって大事だと思ったとこだけメモ

またtour of goをやったのでその中で覚えとこうと思ったとこだけメモりました。

本当にメモなので雑ですが。

いつのまにか全部日本語になっていて嬉しかったです。

目次

関数の引数は型が同じならまとめられる

関数は複数の戻り値を返せる

戻り値に名前をつけられる.宣言までしてくれる(慣れるまで読みづらそう)

var は:で省略できる

var a = 2
a := 2

型変換は明示的にしなければならない

キャストしないとエラーになる

constはnumeric 謎

forとifに()いらない

switch基本breakされる。したくなければfallthroughをcaseの最後につける

swichに条件式かける

deferはreturnの後に関数を呼ぶように予約することができる

defer へ渡した関数の引数は、すぐに評価されますが、その関数自体は呼び出し元の関数がreturnするまで実行されません。

複数deferはLIFO(last-in-first-out:最後に入れたのが最初に出る)で実行される

&がポインタへのキャスト が値へのキャスト と覚える。型宣言の時はintとなるので注意

配列

===========Slice始まり============

[]に長さ指定しなければSliceになる

sliceは配列への参照のようなもの

sliceを直接作ると配列を作ってからそれを参照するスライスを作成するようになっている

sliceを作る時配列全部入れたいならa[:]がいいかな

len(slice)が長さ。cap(slice)はsliceの最初の要素から元となる配列の末尾までの長さ

slice nilでもlenとcapに0入る

ていうかnullじゃなくてnilなのか

makeでSliceの初期化

SliceのSliceとかも作れる(二次元配列的な)

Sliceに要素をたすにはappend(slice,要素)

cap超えたら倍の配列を割り当て直す(Listと同じだね)
nilのsliceにも追加できる

===========slice終わり============

Range

===========mapはじまり============

mapはDictionaryみたいなもん

tryGetしなくてもバグらない

===========map終わり============

closureよくわかんねえけど気をつけよう

type hoge int で型を宣言できる。それにメソッドを持たせることもできる。

同じパッケージで宣言されている型にしかメソッド宣言できない。そりゃそうだ

goは常に値渡し

メソッドのレシーバーはポインタと型(?)で指定できる。インスタンスの内容を変更する場合はポインタじゃないとどうにもならない

メソッド基本的にポインタレシーバで宣言する!!

interfaceは明示的にimplementsしないでメソッドを実装しさえすればimplementsしてるとみなされる

interfaceのメソッドをポインタレシーバで実装したら参照を使わないとエラー出る。。。引っかかりそう

空のinterface{}はObjectみたいなもの

Type assertions 多分isからのasみたいなもん

swichを使うと複数いける。あんま使って欲しくなさそう

Stringersインターフェース String()メソッドを実装するとstringとして出力できる?

Error() stringを実装すればerrorとして扱える

Channels

バッファとしてもよく使いそうだな〜しんどい

Select

これは便利だ〜
channelが準備できるまで待って準備できたのから実行してくれる。複数準備できてたらランダム実行

こういう使い方もできるticktとafterhはchを返すんだね

sync.Mutex

Lock して居るうちは他からアクセスできない

そのうち気が向けば綺麗にまとめたいね。

それにしてもgoroutineとかselectとかchannelとかは使いようによってはものすごく便利そうですね。

素敵。ではまた。

にほんブログ村 IT技術ブログへ
おすすめ

Udemyのビデオ講座は本当に捗るので学習にとてもおすすめです。まじで。


スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です