Is there any built-in function in Go for copying one array to another? Will this work in case of two (or more) dimensional arrays?
3条回答
- dryb38654 2013-09-01 15:41关注
Is there any built-in function in Go language for copying one array to another?
Yes: http://play.golang.org/p/_lYNw9SXN5
a := []string{ "hello", "world", } b := []string{ "goodbye", "world", } copy(a, b) // a == []string{"goodbye", "world"}
Will this work in case of two (or more) dimensional arrays?
copy
will do a shallow copy of the rows: http://play.golang.org/p/0gPk6P1VWha := 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
I don't think there's a built-in for doing deep-copys of multi-dimensional arrays: you can do it manually like: 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
edit: As pointed out in the comments, I assumed by "copy an array" you meant "do a deep copy of a slice", as arrays can be deep-copied with the
=
operator as per jnml's answer (because arrays are value types): http://play.golang.org/p/8EuFqXnqPB本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#python#的问题:求帮写python代码
- ¥20 MATLAB画图图形出现上下震荡的线条
- ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算