基礎からわかるGo言語を読んで
「基礎からわかるGo言語」を1日で読んでしまったので、初知りなど感想をまとめておく。
1章
コンパイラ言語なので早い。
goの第一パラメータがコマンドらしい。(go runとか go buildなど)
2章
Goはfunc main() { みたいに{が横にないとエラーが起こるんだって。(宗教がなくなる
インクリメントは文。だから、変数に代入することはできない hoge := i++とか。あと、変数の前に++とかもできない。
変数宣言時に初期化しないと0が入る。(perlではundefがはいる。)
Perlのコンテキストっぽいなー
var in int = 123 var ii = i
こうすると、iiの初期値のiはint型のためにiiも同様にint型になる。
:=はvarと型を省略するための代入。(変数の宣言も含まれているので、すでに宣言済みの変数には使用できません。どれか一つでも未定義ならいける。
拡張子.aがライブラリ
forでwhileが賄える。(for 条件式{ のように)
forとifの条件式のカッコいらないんだってー。
Go言語書いてると型の方にを書かなくちゃいけないので、Goの後にc書く人は、int hogeとかできなさそう。
ポインタの演算できない。
基本的に使用されないものが書かれていると、cより頑固に怒ってくれる。
三章
Go言語の関数の大きな特徴は、複数の戻り値を一度に返せること。
可変長パラメータの宣言方法が独特
関数にも型があって、変数にも入る。初期化されていない関数型変数は、nilが入っている。 (関数リテラルには名前がないので、変数型変数経由で使用するのが一般的だったりするのかな。
Go言語では、型にメソッドを持たせることができる。(Haskellみたい。型クラスかな?よく知らないので省略) (Rubyのクラスを型とすると、クラスメソッド的な。)どちらにしても、ネームスペース的な隔たりかなー。
deferで関数の遅延実行
五章
6章
要素型がある。(配列型ってのはcでもあるけど、これは初めて。
Go言語では、配列型を直接使わず参照型のスライス型を使用する。
連想配列がマップという名前(内部的にも違う
マップは、キーもバリューも型宣言しないといけない(結構、型型してる)
マップは、参照型なので高速っぽい。マップを変数などに代入してもコストがほとんどかからない