削除方法: 1. "slice object [N:]" ステートメントを使用して最初の N 要素を削除します; 2. "append(slice object[:i], slide object[i N:]. . .)" ステートメントを使用して、中央の N 要素を削除します。 3. "slice object [:len(slice object)-N]" ステートメントを使用して、最後の N 要素を削除します。
このチュートリアルの動作環境: Windows 10 システム、GO 1.11.2、Dell G3 コンピューター。
Go 言語はスライス要素を削除するための特別な構文やインターフェイスを提供しません。削除するにはスライス自体の特性を使用する必要があります。削除する要素の位置により先頭から削除、途中から削除、末尾から削除の3通りがあり、このうちスライスの最後尾の要素を削除するのが最も速いです。
先頭から削除
先頭要素を削除すると、データ ポインタを直接移動できます:
a = []int{1, 2, 3} a = a[1:] // 删除开头1个元素 a = a[N:] // 删除开头N个元素
データ ポインタを移動しないこともできますが、次の要素を移動します。 データを先頭に移動するには、追加を使用してその場で完了します (いわゆるその場で完了とは、元のスライス データに対応するメモリ間隔で完了し、データに変更が生じないことを意味します)メモリ空間構造):
a = []int{1, 2, 3} a = append(a[:0], a[1:]...) // 删除开头1个元素 a = append(a[:0], a[N:]...) // 删除开头N个元素
先頭要素を削除するために copy() 関数を使用することもできます:
a = []int{1, 2, 3} a = a[:copy(a, a[1:])] // 删除开头1个元素 a = a[:copy(a, a[N:])] // 删除开头N个元素
中間位置から削除
#中央の要素を削除するには、残りの要素を同様に全体的に移動する必要があります。追加またはコピーでその場で完了できます:a = []int{1, 2, 3, ...} a = append(a[:i], a[i+1:]...) // 删除中间1个元素 a = append(a[:i], a[i+N:]...) // 删除中间N个元素 a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素 a = a[:i+copy(a[i:], a[i+N:])] // 删除中间N个元素
末尾から削除
a = []int{1, 2, 3} a = a[:len(a)-1] // 删除尾部1个元素 a = a[:len(a)-N] // 删除尾部N个元素先頭の要素を削除し、末尾の要素を削除することは、中間の要素を削除することとみなすことができます。特殊な場合については、例を見てみましょう。
[例] スライスの指定位置の要素を削除します。
package main import "fmt" func main() { seq := []string{"a", "b", "c", "d", "e"} // 指定删除位置 index := 2 // 查看删除位置之前的元素和之后的元素 fmt.Println(seq[:index], seq[index+1:]) // 将删除点前后的元素连接起来 seq = append(seq[:index], seq[index+1:]...) fmt.Println(seq) }コード出力結果:
[a b] [d e] [a b d e]コードの説明は次のとおりです:
以上がGo言語でスライスから要素を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。