スライスの任意の範囲からデータを取り出す
「開始index 以上 終了index未満」って仕様。
他言語でもそうなんだけれど、どうも自分は未だに慣れない。
マイコンのソフト書くので、ゼロスタートはしっくりくるんですが、範囲終了が”指定数値の+1”なのが個人的には微妙。。
開始インデックス:欲しいデータのインデックス
終了インデックス:欲しいデータのインデックス + 1
イメージ的にこっからここまで!って感じがしっくり来るんだけれどなぁ。。。
ソース
package main import "fmt" func main() { x := []string{"a", "b", "c", "d", "e", "f", "g", "h", "i"} fmt.Printf("index : 0 1 2 3 4 5 6 7 8\n") fmt.Printf("slice : %v\n\n",x) fmt.Printf("x[2:5]: %v\n",x[2:5]) fmt.Printf("x[:5] : %v\n",x[:5]) fmt.Printf("x[5:] : %v\n",x[5:]) fmt.Printf("x[:] : %v\n",x[:]) x = append(x, "j", "k", "l") fmt.Printf("append(x,10,11,12) -> x : %v\n",x) }
結果
index : 0 1 2 3 4 5 6 7 8 slice : [a b c d e f g h i] x[2:5]: [c d e] x[:5] : [a b c d e] x[5:] : [f g h i] x[:] : [a b c d e f g h i] append(x,"j","k","l") -> x : [a b c d e f g h i j k l]