Go言語基本スライスの作成と初期化例詳細
2022-01-06 09:11:07
概要
- スライスは動的な配列である
- オンデマンドで自動的にサイズを変更
- 配列とは異なり、スライスの長さを実行時に変更することができる
構文
I. スライスの作成と初期化
作る
組み込みのmake()関数を使用してスライスを作成します。
var slice []type = make([]type, len, cap)
//shortened: slice := make([]type, len, cap)
文字量
var 変数名 []型
slice1 := []string{"张三","李四"} // A string slice with length and capacity of 5 elements
slice2 := []int{10, 20, 30} // integer slice with length and capacity of 3 elements
II. スライスの使用
アサインとスライス
要素のものは、次の例のように [] 演算子を用いて変更することができます。
// Create an integer slice
// Its capacity and length are both 5 elements
slice1:=[]string{"张三","李四","王五","马六","老七"}
// change the value of the element with index 1
slice1[1] = "小张三"
スライスを使用してスライスを作成する
// Create an integer slice
// Its length and capacity are both 5 elements
slice1:=[]string{"张三","李四","王五","马六","老七"}
// Create a new slice
// Its length is 3 elements and its capacity is 3 elements
newSlice:=slice1[2:5]
スライスの成長
append を使用してスライスに要素を追加し、スライスの長さと容量を増加させます。
// Create an integer slice
// Its length and capacity are both 5 elements
slice1:=[]string{"张三","李四","王五","马六","老七"}
// Use the original capacity to assign a new element
// assign the new element to 60
newSlice:=append(slice1,"I'm new here")
スライスの反復処理
for rangeを使ったスライスの反復処理
slice1 := []string{"张三", "李四", "王五", "马六", "老七"}
for k, v := range slice1 {
fmt.Println(k, v)
}
forループを使ったスライスの反復処理
slice1 := []string{"张三", "李四", "王五", "马六", "老七"}
for i := 0; i < len(slice1); i++ {
fmt.Println(i,slice1[i])
}
概要
- スライスのデフォルトの開始位置は0であり、ar[:n] は ar[0:n] と等価である。
- slice は参照型であり、配列へのポインタである。
- 2つのスライスがすべて同じ要素を含んでいるかどうかを判断するために == を使用することはできません。
- スライスが空かどうかを判断するには、s == nil ではなく len(s) == 0 を使用します。
一般的な例
package main
import (
"fmt"
)
func main() {
// i. Create the slice
var slice []int = make([]int, 3)
fmt.Println(slice)
slice1 := []string{"张三", "李四", "王五", "马六", "老七"}
fmt.Println(slice1)
slice2 := []int{10, 20, 30}
fmt.Println(slice2)
//II. Using slices
//Use the [] operator to change an element
slice1[1] = "小张三"
fmt.Println(slice1)
// use slice to create slices [subscript is from 0]
newSlice := slice1[0:2]
fmt.Println(newSlice)
//slice growth
newSlice = append(slice1, "I'm new")
fmt.Println(newSlice)
// Iterate over slices using for range [k:subscript, v:value]
for k, v := range slice1 {
fmt.Println(k, v)
}
// Iterate over the slice using a for loop
for i := 0; i < len(slice1); i++ {
fmt.Println(i,slice1[i])
}
}
例1 2つのスライスは等しいか
package main
import (
"fmt"
"reflect"
)
func main() {
// Are the two slice equal
slice1 := []string{"张三", "李四", "王五", "马六"}
slice2 := []string{"张三", "李四", "王五", "马六"}
if reflect.DeepEqual(slice1, slice2) {
fmt.Println("Two slice equal")
} else {
fmt.Println("Two slice are not equal")
}
}
例2 2つの数字が含まれているか
package main
import (
"fmt"
"sort"
"strings"
)
func main() {
slice1 := []string{"Zhang San", "Li Si", "Wang Wu", "Ma Liu", "Lao Qi"}
fmt.Println(slice1)
target := "李四"
i := sort.Search(len(slice1), func(i int) bool {
return slice1[i] >= target
})
if strings.EqualFold(slice1[i], target) {
fmt.Println(target, "exists, its subscript is ", i)
} else {
fmt.Println("doesn't exist", target)
}
}
以上、Go言語スライスの作成と初期化について詳しく説明しましたが、Go言語スライスの詳細については、スクリプトハウスの他の関連記事にもご注目ください!Go言語スライスの作成と初期化については、スクリプトハウスの他の関連記事にもご注目ください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン