Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

Go言語スライスの任意の範囲を指定

スライスの任意の範囲からデータを取り出す

「開始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]