diff --git a/ja/02.2.md b/ja/02.2.md index 4391067a..94ef3f14 100644 --- a/ja/02.2.md +++ b/ja/02.2.md @@ -227,8 +227,6 @@ Go言語では、複数の定数・変数を宣言する場合、または複数 prefix string ) ->他の値や`iota`に設定されているものを除いて、各`const`グループのはじめの定数はデフォルトで0となります。二番目以降の定数は前の定数の値がデフォルト値となります。もし前の定数の値が`iota`であれば、直後の値も`iota`になります。 - ### iota列挙型 Goでは`iota`というキーワードがあります。このキーワードは`enum`を宣言する際に使用されます。このデフォルト値は0からはじまり、順次1が追加されます: @@ -246,6 +244,8 @@ Goでは`iota`というキーワードがあります。このキーワードは e, f, g = iota, iota, iota //e=0,f=0,g=0 iotaの同一行は同じです ) +>他の値や`iota`に設定されているものを除いて、各`const`グループのはじめの定数はデフォルトで0となります。二番目以降の定数は前の定数の値がデフォルト値となります。もし前の定数の値が`iota`であれば、直後の値も`iota`になります。 + ### Goプログラムのデザインルール Goがこのように簡潔なのは、それがいくつかのデフォルトの行為を持っているからです: - 大文字で始まる変数はエクスポート可能です。つまり、他のパッケージから読むことができる、パブリックな変数だということです。対して小文字で始まる変数はエクスポートできません。これはプライベート変数です。 @@ -379,6 +379,19 @@ sliceには便利な操作があります 注:`append`関数は`slice`が参照した配列の内容を変更し得ます。そのため、参照先と同一の配列の他の`slice`にも影響します。 しかし`slice`の中に余分なスペースが無い(`(cap-len) == 0`)場合、動的なメモリから新たな配列空間が割り当てられます。返される`slice`配列のポインタはこの空間を指しています。また、もとの配列の内容は変わりません。この配列を参照している他の`slice`は影響を受けません。 +Go1.2より、sliceは三引数のsliceをサポートするようになりました。以前まで我々は以下のような方法でsliceまたはarrayからsliceを取り出していました + + var array [10]int + slice := array[2:4] + +この例ではsliceの要素数は8で、新しいバージョンでは以下のように要素数を指定することができます + + slice = array[2:4:7] + +上の要素数は`7-2`、即ち5となります。このように生成された新しいsliceでは最後の3つの要素にアクセスする方法がなくなります。 + +もしsliceが`array[:i:j]`のような形式だった場合は、第一引数は空と見なされ、デフォルトの0となります。 + ### map `map`の概念もPythonのディクショナリです。この形式は`map[keyType]valueType`です。 @@ -448,6 +461,8 @@ mapを使う段階で注意しなければならないことがいくつかあ 図2.5 makeとnewの低レイヤでのメモリの割り当て + +## ゼロ値 "ゼロ値"というのは何も空の値ではありません。これは一種の"変数が埋めらる前"のデフォルト値であり、通常は0です。 それぞれの型のゼロ値は以下の通りです