配列スライスマップスライスとはスライスは、同じ型の値をいくつでも格納することができ、インデックス番号でその値(要素)を管理するという点は配列と同じです。次の点で配列とは異なります。配列は、要素の追加ができませんが、スライスは、要素の追加ができます。配列は値型ですが、スライスは参照型です。スライス名はポインターとして使えます。配列を関数の実引数に指定した場合は、値渡しになりますが、スライスを関数の実引数に指定した場合は、参照渡しになります。間に何も記述しない場合は、スライスを定義したことになります。初期値も与えない場合は、空のスライスが定義されます。間に要素数を記述した場合は、配列を定義したことになります。記述すると、空の配列が定義されます。}(波括弧)で囲んで初期値を与えると、要素を持ったスライスが定義されます。](大括弧)の間には何も記述しないことに注意してください。記述して省略することができます。間に何も記述しないと、スライスの定義になりますので、注意してください。println(s1)println関数の引数に、スライスや配列を渡した場合は、そのコレクションのアドレスが表示されます。実際には、どこのアドレスも指し示していないことが分かります。println(&a1)println関数の引数に、コレクションを渡した場合は、そのコレクションのアドレスが表示されます。引数として配列を渡す場合は、&配列名としなければなりません。実際のアドレスを指し示していることが分かります。fmt.Println(s1)fmt.Println関数の引数が、スライスの場合は、そのスライスの指し示すアドレスの値が表示されます。fmt.Println(a1)fmt.Println関数の引数が、配列の場合は、その配列の値が表示されます。以上をまとめると次のようになります。間に何も記述しないとスライスが定義されます。記述すると配列が定義されます。println関数で表示されるのはコレクションのアドレスです。スライスの場合は、スライス名をそのまま記述すれば良いのですが、配列の場合は、&配列名としなければなりません。fmt.Println関数で表示されるのはコレクションの値です。スライスの場合でも、*スライス名としなくても、スライスの指し示すアドレスの値が表示されます。逆に、*スライス名とするとエラーになりますので注意が必要です。関数は、第1引数のスライスに、第2引数以降の値を持つ要素を追加した、新しいスライスを作ります。もとのスライスに要素が追加されるわけではありません。アドレスは違うのものです。関数は、値のない複数の要素を持つスライスを作成できます。第1引数に型を、第2引数に、要素の個数を指定します。関数は、引数のコレクションの要素数を取得できます。いう値になっています。関数は、第1引数のスライスに、第2引数のスライスをコピーします。第1引数のスライスと第2引数のスライスの要素の個数が違う場合は、先頭からコピーできる個数だけコピーします。エラーにはなりません。関数は、コピーした要素の個数を戻り値として返します。関数の戻り値は使わなくてもエラーになりません。配列からスライスを作るスライスは配列から作ることもできます。]と記述すると、その配列をスライスに変換したものが作れます。前に、配列の何番目からスライスするかをインデックス番号で指定できます。省略した場合は、配列の最初を指定したことになります。後ろには、配列の何番目までスライスするかをインデックス番号で指定できます。省略した場合は、配列の最後までを指定したことになります。番目を指定したことになります。同じものであることが分かります。バイト多いアドレスになっていると思います。個分のメモリ容量です。番目の要素のアドレスであることが分かります。番目を指定できたことが分かります。