golangスライスの使い方
Golang は現在人気のあるプログラミング言語であり、その組み込みデータ型スライスは非常に一般的に使用されています。スライスとはメモリ上にある連続したデータの塊のことで、配列とは異なり動的に長さが可変になる特徴があります。この記事ではGolangスライスの使い方を詳しく紹介します。
- スライスの作成
Golang でスライスを作成するには 2 つの方法があります:
(1) make() 関数を使用してスライスを作成します。
make() 関数は、Golang でスライス、マップ、チャネルなどを作成するために使用される関数です。 make() 関数を使用してスライスを作成する場合は、スライスのタイプ、長さ、容量を指定する必要があります。以下に示すように:
s := make([]int, 5, 10)
上記のコードは、5 つの要素を含む int 型のスライスを作成し、10 個の要素に記憶領域を割り当てます。このうち長さは5本、容量は10本です。
(2) リテラル モードを使用してスライスを作成する
リテラル モードでは、スライスを初期化し、その初期値を定義できます。以下に示すように:
s := []int{1, 2, 3, 4, 5}
上記のコードは、5 つの要素を含む int 型のスライスを作成し、{} を通じてその初期値を定義します。
- スライス要素へのアクセス
配列と同様に、スライス要素には添字を使用してアクセスすることもできます。以下に示すように:
s := []int{1, 2, 3, 4, 5} s[0] // 访问第一个元素 s[1] // 访问第二个元素 ...
- スライス走査
(1) for ループを使用してスライスを走査します
for ループを使用してスライスを走査し、要素の各値を取得します。以下に示すように:
s := []int{1, 2, 3, 4, 5} for i := 0; i < len(s); i++ { fmt.Println(s[i]) }
(2) range キーワードを使用してスライスを走査する
range キーワードを使用すると、より簡単にスライスを走査して各要素の値を取得できます。以下に示すように:
s := []int{1, 2, 3, 4, 5} for _, v := range s { fmt.Println(v) }
上記のコードで _ を使用すると、添え字の戻り値が無視され、要素の値のみが取得されます。
- スライスカット
Golang では、スライスをカットして、より小さなスライスを取得できます。
スライスの切り取り操作はコロン(:)で実行され、以下のように最初のコロンの前の数字が開始位置、最初のコロンの後の数字が終了位置(この位置を除く)を示します。 :
s := []int{1, 2, 3, 4, 5} s1 := s[1:3] // s1变成了[2, 3]
上記のコードでは、s1 は s[1] から始まり s[3] までです (s[3] を除く)。
コロン前の数字を省略した場合は、スライスの最初の要素から開始することを意味します。コロン以降の数字を省略した場合は、スライスの最後の要素までカットすることを意味します。
- スライスは要素を追加します
スライスには長さが動的に変化する特性があるため、1 つ以上の要素を既存のスライスに追加できます。
組み込み関数 append() を使用して、1 つ以上の要素をスライスに追加できます。 append() 関数は、新しく追加された要素に対応するためにスライスの容量を自動的に拡張します。
s := []int{1, 2, 3, 4, 5} s = append(s, 6) // 追加一个元素6 s = append(s, 7, 8, 9) // 追加三个元素7、8、9
- slice は要素を削除します
Golang では、slice には要素を削除する組み込み関数がありませんが、append() 関数を組み合わせて使用できます。要素を削除するカット操作の機能。
たとえば、スライスの 3 番目の要素を削除するには、次の手順を実行します。
(1) スライスの切り取り操作を使用して、削除する要素を削除します。次のとおりです。
s := []int{1, 2, 3, 4, 5} s = append(s[:2], s[3:]...)
上記のコードでは、append() 関数を使用して、スライス内の 3 番目の要素 s[2] を削除する切断操作と連携します。
(2) for ループを使用してスライスを走査し、削除する要素を見つけて、スライスの切断操作を使用して削除します。
- slice copy
Golang では、組み込み関数 copy() を使用してスライスをコピーできます。
s1 := []int{1, 2, 3, 4, 5} s2 := make([]int, len(s1)) copy(s2, s1)
上記のコードでは、make() 関数を使用して s1 と同じ長さのスライス s2 を作成し、copy() 関数を使用して s1 の要素を s2 にコピーします。
コピーされた要素の数がターゲット スライスの容量を超える場合、copy() 関数はターゲット スライス内の要素のみをコピーします。ターゲット スライスがソース スライスより大きい場合、値 0 の要素がターゲット スライスの末尾に追加されます。
概要
上記の内容を通じて、スライスの主な特徴をまとめることができます。
(1) スライスは動的に可変長のシーケンスです。
(2) スライスの基本操作には、要素の作成、アクセス、走査、切り取り、要素の追加、要素の削除、コピーが含まれます。
(3) make() 関数またはリテラル メソッドを使用してスライスを作成します。
(4) スライス要素にアクセスするには、添字または range キーワードを使用します。
(5) 切断操作を使用してスライスを分割し、append() 関数を使用して要素を追加し、copy() 関数を使用してスライスをコピーします。
つまり、スライスは Golang の組み込みデータ型として非常に重要な役割を果たします。動的に可変長のデータ構造が必要な場合は、最初にスライスを使用できます。
以上がgolangスライスの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











この記事では、Goのパッケージインポートメカニズム:名前付きインポート(例:インポート "fmt&quot;)および空白のインポート(例:_&quot; fmt&quot;)について説明しています。 名前付きインポートはパッケージのコンテンツにアクセス可能になり、空白のインポートはtのみを実行します

この記事では、Webアプリケーションでのページ間データ転送のためのBeegoのnewflash()関数について説明します。 newflash()を使用して、コントローラー間で一時的なメッセージ(成功、エラー、警告)を表示し、セッションメカニズムを活用することに焦点を当てています。 リミア

この記事では、MySQLクエリの結果をGO structスライスに効率的に変換することを詳しく説明しています。 データベース/SQLのスキャン方法を使用して、手動で解析することを避けて強調しています。 DBタグとロブを使用した構造フィールドマッピングのベストプラクティス

この記事では、ユニットテストのためにGOのモックとスタブを作成することを示しています。 インターフェイスの使用を強調し、模擬実装の例を提供し、模擬フォーカスを維持し、アサーションライブラリを使用するなどのベストプラクティスについて説明します。 articl

この記事では、GENICSのGOのカスタムタイプの制約について説明します。 インターフェイスがジェネリック関数の最小タイプ要件をどのように定義するかを詳しく説明し、タイプの安全性とコードの再利用性を改善します。 この記事では、制限とベストプラクティスについても説明しています

この記事では、goで効率的なファイルの書き込みを詳しく説明し、os.writefile(小さなファイルに適している)とos.openfileおよびbuffered write(大規模ファイルに最適)と比較します。 延期エラー処理、Deferを使用し、特定のエラーをチェックすることを強調します。

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

この記事では、トレースツールを使用してGOアプリケーションの実行フローを分析します。 手動および自動計装技術について説明し、Jaeger、Zipkin、Opentelemetryなどのツールを比較し、効果的なデータの視覚化を強調しています
