golang スライスのカリング

王林
リリース: 2023-05-21 17:02:38
オリジナル
473 人が閲覧しました

golang スライスの削除

Go 言語では、スライス (スライス) は非常に重要でよく使用されるデータ構造です。これは配列に似ていますが、配列よりも柔軟で便利です。スライスは自動的に拡張できますが、配列の長さは不変です。ただし、実際の開発プロセスでは、スライス内の要素を削除する必要がある状況に遭遇することがあります。この記事では、Go 言語でスライス カリング操作を実行する方法を説明します。

スライスの基本操作

スライスから要素を削除する方法を理解する前に、スライスの基本操作をいくつか理解する必要があります。

スライスの作成

Go 言語では、make() 関数を通じてスライス タイプの変数を作成できます。 make()関数のパラメータはスライスタイプ、スライス長、スライス容量ですが、スライス容量は省略可能で、デフォルトではスライス長と同じになります。

s := make([]int, 5, 10)
// 创建一个长度为5、容量为10的int类型切片s
ログイン後にコピー

スライス要素へのアクセス

配列と同様に、添字を使用してスライス内の要素にアクセスします。

s := []int{1, 2, 3, 4, 5}
fmt.Println(s[0]) // 输出1
ログイン後にコピー

スライスのインターセプト

Go 言語では、スライスは s[i:j] を通じてインターセプトできます。ここで、i は開始インデックス (両端を含む)、j は終了インデックスです。含まれていない)。たとえば、s[2:5] は、インデックス 2 の要素から始まりインデックス 4 の要素で終わるスライスを表します。

s := []int{1, 2, 3, 4, 5}
fmt.Println(s[1:3]) // 输出[2 3]
ログイン後にコピー

スライスに追加

Go 言語では、append() 関数を使用して要素をスライスに追加できます。要素をスライスに追加すると容量が不足する場合、基になる配列が自動的に拡張されます。 append()関数の最初のパラメータは追加するスライスで、後続のパラメータは追加する値です。

s := []int{1, 2, 3}
s = append(s, 4, 5)
fmt.Println(s) // 输出[1 2 3 4 5]
ログイン後にコピー

スライスのコピー

Go 言語では、copy() 関数を使用して、あるスライスを別のスライスにコピーできます。 copy() 関数の最初のパラメータはターゲット スライスで、2 番目のパラメータはソース スライスです。ソース スライスの長さがターゲット スライスの長さよりも長い場合、ソース スライスの最初の n 要素がインターセプトされます (n はターゲット スライスの長さです)。ソース スライスの長さがターゲット スライスの長さ以下の場合、コピーされた要素を除くターゲット スライス内の他の要素は影響を受けません。

s1 := []int{1, 2, 3}
s2 := make([]int, 2)
copy(s2, s1)
fmt.Println(s2) // 输出[1 2]
ログイン後にコピー

スライスの削除

スライスの基本操作を理解したら、Go 言語でスライスの削除操作を実行する方法を検討し始めることができます。

方法 1: append() 関数とスライス インターセプトを使用して実装します。

まず、スライス インターセプトによって削除する要素の前部分と後ろ部分を取得し、それを append に渡します。 ( ) 関数は追加することができます。

func deleteSlice1(s []int, i int) []int {
    return append(s[:i],s[i+1:]...)
}

s := []int{1, 2, 3, 4, 5}
s = deleteSlice1(s, 2)
fmt.Println(s) // 输出[1 2 4 5]
ログイン後にコピー

方法 2: copy() 関数とスライス インターセプトを使用して実装

copy() 関数を使用してスライス削除操作を実装することもできます。 copy関数を使用して、削除する要素の後続の要素を削除する要素の位置にコピーし、スライスとインターセプト操作によって前半と後半を取得できます。

func deleteSlice2(s []int, i int) []int {
    copy(s[i:], s[i+1:])
    return s[:len(s)-1]
}

s := []int{1, 2, 3, 4, 5}
s = deleteSlice2(s, 2)
fmt.Println(s) // 输出[1 2 4 5]
ログイン後にコピー

概要

この記事では、読者が Go 言語でのスライスについてより深く理解できるように、スライスの基本操作とスライス除去操作を実装する 2 つの方法について説明します。構造とその応用。実際の開発では、特定の状況に応じてさまざまな方法を選択してスライス削除操作を実装することで、コードの効率と保守性を向上させることができます。

以上がgolang スライスのカリングの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!