0619
LOGS
Tour of Go の続き
- import について
"math/rand"
でインポートしたらrand()
で実行できる"matn"
でインポートしたらmath.Rand()
で実行できる
- 以下のように文字列の中に展開したい場合,以下のように
%g
などで書ける(C言語間あるな)%T
: type%v
: value
func main() { fmt.Printf("Now you have %g problems.\n", math.Sqrt(7)) }
Named return values
- 名前付きの return だが,これは個人的にはあまり使わないかなぁ
naked returnステートメントは、短い関数でのみ利用すべきです。
ともある.例
func split(sum int) (x, y int) { x = sum * 4 / 9 y = sum - x return }
Basics types
bool string int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr byte // uint8 の別名 rune // int32 の別名 // Unicode のコードポイントを表す float32 float64 complex64 complex128
変数に初期値を与えないで宣言だけをすると,デフォルトで値が与えられ,それを
ゼロ値(zero value)
という数値型(int,floatなど): 0 bool型: false string型: "" (空文字列( empty string ))
変数は複数個一度に宣言できるし,初期値を設定できる
const ( hoge = "hoge" fuga = 123 )
定数は
const
を使って宣言する定数は、文字(character)、文字列(string)、boolean、数値(numeric)のみで使えます。
- なるほど
for 文の書き方は,
(, )
は不要だが,{, }
はマスト- また,条件の前に評価するための簡単なステートメントを書ける
for i := 0; i < 10; i++ { sum += i }
初期化と後処理ステートメントの記述は任意
セミコロン(;)を省略することもできます。つまり、C言語などにある while は、Goでは for だけを使います。
- ああ,なるほど.
while
ないのか - こんな感じ
sum := 1 for sum < 1000 { sum += sum }
- if 文も for 文と書き方は同じ
- もちろん,条件の前に評価するための簡単なステートメントを書ける
- ただ,このステートメントで宣言された変数は if 文の外ではスコープ外なので参照できない
- switch 文も for, if 文と書き方は同じ
- 条件の前に簡単なステートメント…(ry
break
文は golang だと自動で提供されるので書かなくて良いのはありがたい2009-11-10 23:00:00 UTC
は golang の誕生日とかかな?
- ああ,なるほど.
Defer
defer ステートメントは、 defer へ渡した関数の実行を、呼び出し元の関数の終わり(returnする)まで遅延させるものです。
ほーなるほど.以下例文は
hello world
と表示されるdefer fmt.Println("world") fmt.Println("hello")
defer で渡した関数が複数個あったら,stack され,
LIFO
の順番で実行される
- 今日はここまで.次回は
Pointers
から
- import について