ฉันต้องการทำสำเนาชิ้นส่วนใน Go และอ่านเอกสารมีฟังก์ชั่นการคัดลอกให้ฉันใช้
ฟังก์ชันคัดลอกในตัวจะคัดลอกองค์ประกอบจากชิ้นส่วนต้นทางไปยังชิ้นส่วนปลายทาง (ในกรณีพิเศษมันจะคัดลอกไบต์จากสตริงไปยังส่วนของไบต์ด้วย) ต้นทางและปลายทางอาจทับซ้อนกัน Copy ส่งคืนจำนวนองค์ประกอบที่คัดลอกซึ่งจะเป็นค่าต่ำสุดของ len (src) และ len (dst)
แต่เมื่อฉันทำ:
arr := []int{1, 2, 3}
tmp := []int{}
copy(tmp, arr)
fmt.Println(tmp)
fmt.Println(arr)
ของฉันtmpว่างเปล่าเหมือนเดิม (ฉันพยายามใช้ด้วยซ้ำarr, tmp):
[]
[1 2 3]
คุณสามารถตรวจสอบที่ไปสนามเด็กเล่น เหตุใดฉันจึงไม่สามารถคัดลอกชิ้นส่วนได้?
dstอย่างน้อยควรมีขนาดใหญ่เท่ากับองค์ประกอบจำนวนมากที่คุณต้องการคัดลอก (สำหรับสำเนาทั้งหมดsrcหมายถึงlen(dst) >= len(src))
b := append([]int{}, a...)