やみとものプログラミング日記

人生気楽に。

TOP Go言語勉強記録

Go言語勉強記録

thum/images/go_logo.jpg
ちょっと気になるOSSがGo言語で書かれているので、
Go言語を勉強してみることにした。

「プログラミング経験者がGo言語を本格的に勉強する前に読むための本」
著者:天田士郎
という本でざっと文法を眺めたのち(アマゾンでKindle版をDLした)
「Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る」
という本を今読んでいる。

追記:勉強する前に読むための本は安くてKindle版もDL出来るけど、
公式のチュートリアル
の方がとっつきやすいと思う。日本語もあります。

勉強しつつ所感や備忘録、調べたことなどを書いていこうと思う。

Goプログラミング実践入門はほとんど文法の解説がなく、
Webサーバを作るための実践的な本だった。
まずは文法などをしっかり固めるべきだと思ったので、
公式のチュートリアルをやろうと思う。日本語もある。

Go言語勉強記録その2

Goの特徴

・Goはコンパイル型の言語
・仮想マシンなどは無く、Goプログラムが動作するCPUとOSに
適合したネイティブコードを生成するだけ
・よって、オーバーヘッドが少なく高速に動作する
・ゴルーチンによるシンプルかつ効率的な並行処理
・言語機能や文法などの要素を極限まで削ったコンパクトなプログラミング言語

型について

C++ほど厳密ではないけど一応静的型付け言語になるんだろう。
型推論とかしてくれるし、少し工夫すると型なしの変数定義できる。

型の後置記法について

ちょっと気持ち悪い。慣れるまで時間掛かるんだろうな。
var d int = 4
みたいに書かないといけない。

セミコロン

省略可。書いても書かなくても良い。
これは気分が楽だ。

関数

funcで定義する。複数の戻り値を返したりできる。
[code]
func aaa(num int) (int, string) {
// 処理
return 100, "hoge"
}
[/code]
(int, string)は戻り値の型

関数を変数に代入したり、関数の引数に関数を与えたり、
関数の戻り値として関数を返したりできる。
こういうのを関数は第一級オブジェクトであるというらしい。


naked return
戻り値となる変数に名前をつけることができる
[code]
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
[/code]
(x, y int)の部分が関数の戻り値の変数の型と名前を表している。
関数内ではx,yという変数がすでに定義されているものとして使っていい。
これを使うとreturnだけで良くなるが、
公式チュートリアルによると可読性が下がるため
短い関数でのみ使うのが推奨されている。

ローカルスコープの変数宣言

[code]
a := 1
[/code]
red(ローカルスコープの変数に限りこの形で宣言できる。
ただし変数の型は指定できない。

パッケージとエクスポート

パッケージ内で大文字で始まる名前は外部にエクスポートされる。
小文字で始まる名前はエクスポートされない。
red(要注意

ゼロ値

変数に初期値を与えずに宣言すると以下のゼロ値が自動的に代入される。
int,float → 0
bool → false
string → ""

定数

定数はconstを使って宣言する。
[code]
const World = "世界"
// World = "aaa" //これはエラー
fmt.Println("Hello", World)
[/code]

コメント

もしよろしければコメント下さい。

ハンドルネーム:
内容:

コメント一覧

最新記事

部分空間の定義と条件、生成元の定義
線形空間の基底の定義
線形空間(ベクトル空間)