スライム
【開発環境】
OS:Win11(64ビット)
go version go1.19.4 windows/amd64
VSCode1.72.2、及びコマンドプロンプト
◆スライス
スライスは、配列と似ていますが、最も特徴的な点は、Go の配列は宣言した時点で型とサイズが決められているのに対して、「スライスはサイズが決められていない」という点でしょう。 スライスは必要に応じてデータ領域を割り当て直すことで、動的な配列として振る舞います。
◆スライスの宣言と使用
スライスに属する情報は、現在保存されている要素数(長さ)と、保存できる要素数である容量という2個の値がある。
・宣言
var name =[]type{}
name:スライス変数の名前
type:スライスの要素の型
但し、宣言だけでは要素数が0,容量が0のスライムができる
・スライムに値を保存するには、append()を使う
var a =[]type{}
a = append(a,123)
・スライム宣言と同時に特定の値を初期化する
var a = [...]int{1,3,5,7,9}
・スライムベースの配列からスライムsを作る
var a = [...]int{1,3,5,7,9}
var s = a[1:4]→中身は、[3,5,7]
例文1--append()で要素を追加するには
// 要素追加
package main
import "fmt"
func main() {
// スライスを宣言
a := []int{1, 2, 3}
fmt.Println(a)
// append関数
// スライスの最後に要素を追加する
num := append(a, 4)
fmt.Println(num)
}
実行
PS D:\GO言語\サンプルプログラム\Go-5\slice> go run test.go
[1 2 3]
[1 2 3 4]
例文2--スライスをベースとした配列
//
package main
import "fmt"
func main() {
// スライスを宣言
a := []int{1, 2, 3, 7, 9}
fmt.Println(a)
// スライスから配列
num := a[1:4]
fmt.Println(num)
}
実行
PS D:\GO言語\サンプルプログラム\Go-5\slice> go run test.go
[1 2 3 7 9]
[2 3 7]
◆スライスとmake()
スライスの定義には、make()を使うことが出来ます。メモリを割り当てる操作なので、パフォーマンスが向上するというメリットがあります。
・定義
make([]型名, length, capacity)
length:長さ
capacity:容量
サンプルコード
// make()
package main
import "fmt"
func main() {
//int型で、長さ3、容量5のスライスを定義
x := make([]int, 3, 5)
fmt.Println(x)
fmt.Println(len(x))
fmt.Println(cap(x))
x = append(x, 0, 0) //appendを使って0を2つ追加
fmt.Println(x)
fmt.Println(len(x))
fmt.Println(cap(x))
x = append(x, 6, 7, 8, 9, 10)
fmt.Println(x)
fmt.Println(len(x))
fmt.Println(cap(x))
}
・実行
PS D:\GO言語\サンプルプログラム\Go-5\slice> go run test.go
[0 0 0]
3
5
[0 0 0 0 0]
5
5
[0 0 0 0 0 6 7 8 9 10]
10
10