golang 配列の削除

May 19, 2023 am 09:01 AM

Golang は厳密に型指定された言語であり、その配列は固定長です。つまり、配列の長さは宣言時に指定する必要があり、その後の使用時に配列の長さを変更することはできません。これは、シナリオによっては非常に不便になる可能性があります。たとえば、配列から要素を削除する必要がありますが、配列の長さは変更しないようにする必要があります。

この場合、いくつかの手法を使用して、配列の要素の削除操作を実現できます。この記事では、2 つの一般的な Golang 配列削除テクニックを紹介します。

1. スライス インターセプト操作を使用して要素を削除します

スライスは参照型であり、あらゆる種類の要素を含めることができ、動的に拡大および縮小できます。スライスのインターセプト操作により、Golang 配列内の要素を簡単に削除できます。具体的な操作手順は次のとおりです。

  1. #Golang 配列の定義
arr := [5]int{1, 2, 3, 4, 5}
ログイン後にコピー
ログイン後にコピー
  1. 削除する要素の添字を定義します
index := 2
ログイン後にコピー
ログイン後にコピー
  1. スライス インターセプト操作を使用して、指定された添字を持つ要素を削除します
arr = append(arr[:index], arr[index+1:]...)
ログイン後にコピー

この例では、まず、5 つの要素を含む Golang 配列 arr を定義します。次に、削除する要素の添え字インデックスを定義し、ここでは削除する 3 番目の要素を選択しました。次に、スライス インターセプト操作を使用して、元の配列を 2 つの新しい配列にインターセプトし、それらを新しい配列 arr にマージします。この時点で、3 番目の要素は削除されています。

完全なコードは次のとおりです:

package main

import "fmt"

func main() {
    arr := [5]int{1, 2, 3, 4, 5}
    index := 2
    arr = append(arr[:index], arr[index+1:]...)
    fmt.Println(arr)
}
ログイン後にコピー

実行結果は次のとおりです:

[1 2 4 5]
ログイン後にコピー
ログイン後にコピー

3 番目の要素が正常に削除されたことがわかります。

2. スライス反転操作を使用して要素を削除する

スライス インターセプト操作を使用することに加えて、スライス反転操作を通じて Golang 配列内の要素を削除することもできます。具体的な手順は次のとおりです。

  1. Golang 配列の定義
arr := [5]int{1, 2, 3, 4, 5}
ログイン後にコピー
ログイン後にコピー
  1. 削除する要素の添字の定義
index := 2
ログイン後にコピー
ログイン後にコピー
  1. 配列を反転する
for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 {
    arr[i], arr[j] = arr[j], arr[i]
}
ログイン後にコピー
ログイン後にコピー
  1. スライス インターセプト操作を使用して、指定された添え字を持つ要素を削除します
arr = arr[:len(arr)-1]
ログイン後にコピー
  1. 配列を反転しますagain
for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 {
    arr[i], arr[j] = arr[j], arr[i]
}
ログイン後にコピー
ログイン後にコピー

ここで注意する必要があるのは、ステップ 3 と 5 では、2 つの変数の値を一度に交換できる Golang の複数の代入ステートメントを使用していることです。 arr[i] と arr[j] を直接使用して値を交換すると、コードはさらに複雑になります。

完全なコードは次のとおりです:

package main

import "fmt"

func main() {
    arr := [5]int{1, 2, 3, 4, 5}
    index := 2
    for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 {
        arr[i], arr[j] = arr[j], arr[i]
    }
    arr = arr[:len(arr)-1]
    for i, j := 0, len(arr)-1; i < j; i, j = i+1, j-1 {
        arr[i], arr[j] = arr[j], arr[i]
    }
    fmt.Println(arr)
}
ログイン後にコピー

実行結果は次のとおりです:

[1 2 4 5]
ログイン後にコピー
ログイン後にコピー

3 番目の要素が正常に削除されたこともわかります。

概要

この記事を通じて、Golang 配列は固定長であるにもかかわらず、スライス インターセプト操作やスライス反転操作など、いくつかのテクニックを使用して要素の削除操作を実現できることを学びました。ただし、配列の長さが固定されているため、これらの操作により追加のオーバーヘッドが発生するため、実際の使用ではプログラムのパフォーマンスを確保するために頻繁な削除操作を避ける必要があることに注意してください。

以上がgolang 配列の削除の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Debian OpenSSLの脆弱性は何ですか Debian OpenSSLの脆弱性は何ですか Apr 02, 2025 am 07:30 AM

OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

PPROFツールを使用してGOパフォーマンスを分析しますか? PPROFツールを使用してGOパフォーマンスを分析しますか? Mar 21, 2025 pm 06:37 PM

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

Goでユニットテストをどのように書きますか? Goでユニットテストをどのように書きますか? Mar 21, 2025 pm 06:34 PM

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? Apr 02, 2025 am 09:12 AM

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

go.modファイルで依存関係をどのように指定しますか? go.modファイルで依存関係をどのように指定しますか? Mar 27, 2025 pm 07:14 PM

この記事では、go.modを介してGOモジュールの依存関係の管理、仕様、更新、競合解決をカバーすることについて説明します。セマンティックバージョンや定期的な更新などのベストプラクティスを強調しています。

GOでテーブル駆動型テストをどのように使用しますか? GOでテーブル駆動型テストをどのように使用しますか? Mar 21, 2025 pm 06:35 PM

この記事では、GOでテーブル駆動型のテストを使用して説明します。これは、テストのテーブルを使用して複数の入力と結果を持つ関数をテストする方法です。読みやすさの向上、重複の減少、スケーラビリティ、一貫性、および

See all articles