2010年2月27日土曜日

型について その1 String

チュートリアルの型についての説明は、いきなりハードルがあがります。
文字列、配列、ポインタ、スライス、mapなど
既存の概念を知らないとこの解説だけでついていくのは難しそうに思います。

String型


goの文字列型はバイト列ではなく固定の物で、
StringをbyteであつかったりIntのポインタに変換したりはできないそうです。
おそらくは文字列表現へのポインタで
単純にそれを入れ替える作りなのかなぁと今のところ考えています。
そのうちヘッダを読んでみます。


s := "hello"
if s[1] != 'e' { os.Exit(1) }
s = "good bye"
var p *string = &s
*p = "ciao"

こういう文字列の入れ替えは可能ですが

s[0] = 'x';
(*p)[1] = 'y';

文字列をポインタとして扱うことは不可能ですと。
文字列全体を入れ替えることはできるので
置換用の関数やらメソッドみたいなもので入れ替えろと言いたいのでしょう。

In C++ terms, Go strings are a bit like const strings, while pointers to strings are analogous to const string references.


これでわかるひととわからん人にわかれそうな解説...。
まあそういうことはとりあえず見なかったことにして先に進みましょう。

0 件のコメント:

コメントを投稿