Goに1つの配列を別の配列にコピーするための組み込み関数はありますか? 2つ(またはそれ以上)の次元配列の場合、これは機能しますか?Go言語で配列をコピーする機能
答えて
配列を別の配列にコピーするためのGo言語の組み込み関数はありますか?
はい:http://play.golang.org/p/_lYNw9SXN5
a := []string{
"hello",
"world",
}
b := []string{
"goodbye",
"world",
}
copy(a, b)
// a == []string{"goodbye", "world"}
れる2つの(またはそれ以上)の次元アレイの場合には、この作業?手動でそれを行うことができます:私は内蔵の多次元配列の深copysを行うためないと思うhttp://play.golang.org/p/0gPk6P1VWh
a := make([][]string, 10) b := make([][]string, 10) for i := range b { b[i] = make([]string, 10) for j := range b[i] { b[i][j] = strconv.Itoa(i + j) } } copy(a, b) // a and b look the same b[1] = []string{"some", "new", "data"} // b's second row is different; a still looks the same b[0][0] = "apple" // now a looks different
:
copy
は、行のシャローコピーを行います以下のような:http://play.golang.org/p/nlVJq-ehzC
a := make([][]string, 10)
b := make([][]string, 10)
for i := range b {
b[i] = make([]string, 10)
for j := range b[i] {
b[i][j] = strconv.Itoa(i + j)
}
}
// manual deep copy
for i := range b {
a[i] = make([]string, len(b[i]))
copy(a[i], b[i])
}
b[0][0] = "apple"
// a still looks the same
編集:コメントで指摘したように、私は配列はとディープコピーすることができますように、あなたは「スライスのディープコピーを行う」意味「の配列をコピー」が想定していますオペレータjnmlの回答の通り(配列は値型であるため):それは他のタイプの任意の他の値の場合と同様http://play.golang.org/p/8EuFqXnqPB
ありがとうございます。それは助けた –
あなたは質問に答えました: "1つのスライスを別のスライスにコピーするためのGo言語の組み込み関数はありますか?" OPが実際に望んでいたものかもしれませんが、配列とスライスの違いを説明する必要があります。 –
移動に配列をコピーするための主要な「機能」は、assignment operator =あります。
package main
import "fmt"
func main() {
var a, b [4]int
a[2] = 42
b = a
fmt.Println(a, b)
// 2D array
var c, d [3][5]int
c[1][2] = 314
d = c
fmt.Println(c)
fmt.Println(d)
}
出力:
[0 0 42 0] [0 0 42 0]
[[0 0 0 0 0] [0 0 314 0 0] [0 0 0 0 0]]
[[0 0 0 0 0] [0 0 314 0 0] [0 0 0 0 0]]
使用copy
http://play.golang.org/p/t7P6IliMOK
a := []int{1, 2, 3}
var b [3]int
fmt.Println("A:", a)
fmt.Println("B:", b)
copy(b[:], a)
fmt.Println("A:", a)
fmt.Println("B2:", b)
b[1] = 9
fmt.Println("A:", a)
fmt.Println("B3:", b)
OUT:
A: [1 2 3]
B: [0 0 0]
A: [1 2 3]
B2: [1 2 3]
A: [1 2 3]
B3: [1 9 3]
- 1. Go言語の構造体の配列
- 2. go言語機能の注釈を取得するには?
- 3. Go言語の順列を作成
- 4. Jプログラミング言語での配列言語
- 5. プログラミング言語機能
- 6. C言語:文字列を1つずつ配列にコピー
- 7. 他の言語に言語機能を統合する
- 8. C言語の新機能:構造体を配列に格納する
- 9. GO - 配列コピーはディープコピーかシャローコピーか?
- 10. Goプログラミング言語用PostgreSQLドライバ
- 11. Go言語の構文Confusion
- 12. GO言語のラムダ式
- 13. Go言語の副作用
- 14. 言語機能直交?
- 15. Go言語を使用する文字列のコピーオンライト
- 16. 文字列をgo言語のintに変換する
- 17. GO言語を参照するクエリ列が動作しない
- 18. 配列からC言語の別の配列への要素のコピー範囲
- 19. Google Go言語での例外処理
- 20. go言語での再帰関数
- 21. 機能的で純粋なプログラミング言語
- 22. アルマジロのC言語での機能
- 23. 配列のコピー時に角のコピーが機能しない
- 24. C言語で巨大な配列をローカルに宣言する
- 25. strings.Join()メソッドで使用する文字配列として文字列にアクセスします。GO言語
- 26. Goテンプレート機能
- 27. アセンブリ言語での配列アクセス
- 28. NetBeans IDEでGo言語を使用するには?
- 29. Go言語で内部構造を使用するC
- 30. コマンドプロンプトでGO言語のgodocを実行する
落とし穴:配列とスライスがかなり似ていますが、動作が異なります。配列は値によって、スライスは参照(簡略化)されます。 – Christian