π¬ ΠΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠΏΠΈΠΈ ΡΡΠ΅Π·ΠΎΠ² Π² Go?
π ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ
πΈΠ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΡΡΠ΅Π·, ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΈΜ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ
πΈΠ§ΡΠΎΠ±Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
πΈΠ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅
πΈΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²ΡΠΎΡΠΎΠΈΜ ΡΡΠ΅Π· Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΡΡ Π΄Π»ΠΈΠ½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π»ΠΈΠ½Ρ, ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π·Π°:
πΈΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ
π‘ΠΡΡΠ³Π°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° β ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
πΉΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΈΜ ΡΡΠ½ΠΊΡΠΈΠΈ
πΉΠΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π·Π° Π² Π΄ΡΡΠ³ΠΎΠΈΜ, Π½ΡΠ»Π΅Π²ΠΎΠΈΜ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΠ΅Π·Π° Π΄Π»ΠΈΠ½ΠΎΠΈΜ
π ΠΡΡΡΠΎΠ΅Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ
copy
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π·Π° Π² Π΄ΡΡΠ³ΠΎΠΈΜ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².πΈΠ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΡΡΠ΅Π·, ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² Π΄ΡΡΠ³ΠΎΠΈΜ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ
[]
Π²ΠΌΠ΅ΡΡΠΎ [0 1 2]
:src := []int{0, 1, 2}
var dst []int
copy(dst, src)
fmt.Println(dst)
πΈΠ§ΡΠΎΠ±Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
copy
, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π² Π΄ΡΡΠ³ΠΎΠΈΜ ΡΡΠ΅Π·, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ: Π΄Π»ΠΈΠ½ΠΎΠΈΜ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π·Π° ΠΈ Π΄Π»ΠΈΠ½ΠΎΠΈΜ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ΅Π·Π°.πΈΠ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅
src
β ΡΡΠΎ ΡΡΠ΅Π· Π΄Π»ΠΈΠ½ΠΎΠΈΜ 3
, Π° dst
β ΡΡΠ΅Π· Ρ Π½ΡΠ»Π΅Π²ΠΎΠΈΜ Π΄Π»ΠΈΠ½ΠΎΠΈΜ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠΎΡΡΠΎΠΌΡ ΡΡΠ½ΠΊΡΠΈΡ copy
ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°Π²Π½ΠΎΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ Π² Π½Π°Π±ΠΎΡΠ΅ 3
ΠΈ 0
: Π·Π΄Π΅ΡΡ ΡΡΠΎΡ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ 0
. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΈΜ ΡΡΠ΅Π· Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΡΠΌ. πΈΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π²ΡΠΎΡΠΎΠΈΜ ΡΡΠ΅Π· Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄Π»ΠΈΠ½Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΡΡ Π΄Π»ΠΈΠ½Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ Π΄Π»ΠΈΠ½Ρ, ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π·Π°:
src := []int{0, 1, 2}
dst := make([]int, len(src))
copy(dst, src)
fmt.Println(dst)
πΈΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ
dst
ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ΅Π·, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΈΜ Ρ Π΄Π»ΠΈΠ½ΠΎΠΈΜ, ΡΠ°Π²Π½ΠΎΠΈΜ 3
, ΡΠΎ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ [012]
.π‘ΠΡΡΠ³Π°Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ° β ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ
copy
. ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΡΡΠ΅Π·, Π² ΠΊΠΎΡΠΎΡΡΠΈΜ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, β ΠΏΠ΅ΡΠ²ΡΠΈΜ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ, Π° ΡΡΠ΅Π·-ΠΈΡΡΠΎΡΠ½ΠΈΠΊ β Π²ΡΠΎΡΠΎΠΈΜ.πΉΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΈΜ ΡΡΠ½ΠΊΡΠΈΠΈ
copy
β Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΈΜ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅Π·Π°. ΠΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ:src := []int{0, 1, 2}
dst := append([]int(nil), src...)
πΉΠΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅Π·Π° Π² Π΄ΡΡΠ³ΠΎΠΈΜ, Π½ΡΠ»Π΅Π²ΠΎΠΈΜ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΠ΅Π·Π° Π΄Π»ΠΈΠ½ΠΎΠΈΜ
3
ΠΈ Π΅ΠΌΠΊΠΎΡΡΡΡ 3
. ΠΠ΄Π½Π°ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ copy
Π±ΠΎΠ»Π΅Π΅ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π»Π΅Π³ΡΠ΅ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π°.