Go では「copy()」関数はどのように機能しますか?
Go ではコピー関数はどのように動作しますか?
ドキュメントにもかかわらず、コピー関数の操作についてはさらに明確にする必要があるかもしれません。
Built- in Copy Function
copy 関数は、ソース スライスから同じ要素タイプの宛先スライスに要素を転送します。 copy は文字列からバイトのスライスにバイトをコピーする可能性があることに注意してください。
コピー関数のシグネチャは次のとおりです。
<code class="go">func copy(dst, src []Type) int</code>
ここで、
- dst は宛先スライス。
- src はソース スライスです。
- 戻り値value はコピーされた要素の数です。
コピー関数操作
copy は基本的に、要素を src から dst に len(src) 要素と len(dst) 要素の最小値までコピーします。これは、宛先スライスがその容量を超えることなくソース スライスのすべての要素を確実に収容できることを意味します。
例
次のコードを考えてみましょう。
<code class="go">package main import "fmt" func main() { src := []int{10, 11, 12, 13, 14} dst := []int{0, 1, 2, 3, 4} n := copy(dst, src) fmt.Println("n =", n, "src =", src, "dst =", dst) }</code>
出力:
n = 5 src = [10 11 12 13 14] dst = [10 11 12 13 14]
この例では、src スライス全体が dst スライスにコピーされ、両方のスライスが次のようになります。
重複するスライス
コピー機能は、重複するスライスでも使用できます。例:
<code class="go">copy(src, src[1:]) fmt.Println("n =", n, "src =", src)</code>
出力:
n = 4 src = [1 2 3 4 4]
このシナリオでは、src の最初の要素がコピーから除外され、残りの 4 つの要素は実質的に 1 インデックス分左にシフトされます。 、最初の要素を最後の要素で上書きします。
特殊なケース: 文字列をバイトにコピーするスライス
前述したように、copy を使用すると、文字列からバイトのスライスにバイトをコピーできます。以下に例を示します。
<code class="go">str := "Hello, World!" data := make([]byte, 5) n = copy(data, str) fmt.Println("n =", n, "str =", str, "data =", data)</code>
出力:
n = 5 str = Hello, World! data = [72 101 108 108 111]
コピー関数は、文字列の UTF-8 表現の最初の 5 バイトをデータ スライスにコピーします。
結論
コピー関数は、重複するメモリを共有している場合でも、スライス間で要素を転送する効率的な方法を提供します。その多用途性により、Go プログラミングにおける貴重なツールとなります。
以上がGo では「copy()」関数はどのように機能しますか?の詳細内容です。詳細については、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 Language Packのインポート:アンダースコアとアンダースコアなしの違いは何ですか?

MySQLクエリ結果リストをGO言語のカスタム構造スライスに変換する方法は?

GOのジェネリックのカスタムタイプ制約を定義するにはどうすればよいですか?

GOでテスト用のモックオブジェクトとスタブを書くにはどうすればよいですか?

トレースツールを使用して、GOアプリケーションの実行フローを理解するにはどうすればよいですか?
