職案人

求職・歴史・仏教などについて掲載するつもりだが、自分の思いつきが多いブログだよ。適当に付き合って下さい。

goのコンポジット型--スライム編

2023年03月03日 | GO言語
スライム


【開発環境】
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






コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Goのメソッド | トップ | go言語のインターフェース »
最新の画像もっと見る

コメントを投稿

GO言語」カテゴリの最新記事