如何在Go中将数组复制到另一个数组中?

我是Go语言的新手,想将一个数组(切片)复制到另一个数组中。 例如,我有一个largeArray [1000] byte之类的东西和一个smallArray [10] byte,我希望largeArray的前10个字节等于smallArray的内容。 我已经尝试过:</ p>

  largeArray [0:10] = smallArray [:] 
</ code> </ pre>

但这不 似乎行得通。 有内置的类似memcpy的函数,还是我只需要自己写一个?</ p>

谢谢!</ p>
</ div>

展开原文

原文

I am new to Go, and would like to copy an array (slice) into part of another. For example, I have a largeArray [1000]byte or something and a smallArray [10]byte and I want the first 10 bytes of largeArray to be equal to the contents of smallArray. I have tried:

largeArray[0:10] = smallArray[:]

But that doesn't seem to work. Is there a built-in memcpy-like function, or will I just have to write one myself?

Thanks!

doukuiqian9911
doukuiqian9911 我几乎用谷歌搜索,而这个和其他一些类似的东西在官方文档之前已经列出。此外,文档缺少示例来帮助说明其工作原理(我先阅读了文档,然后才来这里“获得它”,是的,我是Go的新手)。
接近 5 年之前 回复
dongyan1936
dongyan1936 在您问这样的问题之前,请尝试使用Google搜索“Golanguagecopy”。当答案非常容易获得时,请不要在这里提问。
大约 9 年之前 回复

1个回答



使用 copy 内置函数。</ p>

  package main 

func main(){
largeArray:= make([] byte,1000)
smallArray:= make([] byte,10)
复制(largeArray [0:10],smallArray [:])
}
</ code> </ pre>
</ div>

展开原文

原文

Use the copy built-in function.

package main

func main() {
    largeArray := make([]byte, 1000)
    smallArray := make([]byte, 10)
    copy(largeArray[0:10], smallArray[:])
}

dongpo8702
dongpo8702 严格来说,在该示例中创建这些数组就是这样:var largeArray [1000] byte; var smallArray [10] byte。 请注意,如前所述,复制可以写入切片或数组的子部分,我想您可以省略数组上的范围索引,因为它正在复制到largeArray的0-9索引中,仅复制与 第二,受第一长度的限制(我认为不是容量)。
一年多之前 回复
dousi8931
dousi8931 这不是实际上创建两个切片,而不是两个数组吗? 但是我想同样的代码也适用于数组
5 年多之前 回复
dsjgk330337
dsjgk330337 是的,副本是从smallArray到largeArray。 您正在从largeArray复制到smallSlice [sic]。
7 年多之前 回复
doutao5499
doutao5499 它一定是副本吗? 切片可以是数组或其他切片的叠加。 因此,smallSlice:= largeArray [0:10]就足够了。
大约 9 年之前 回复
dsuxcxqep31023992
dsuxcxqep31023992 谢谢! Go的文档在我看来似乎有些分散,我希望不是那样...
大约 9 年之前 回复
dqt20140129
dqt20140129 注意:在copy()调用中不需要[:]位。
大约 9 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐