πŸ’¬ Как ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· срСза массив ΠΈ для Ρ‡Π΅Π³ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ?





1. Б использованиСм unsafe:



package main



import (

"fmt"

"unsafe"

)



func main() {

slice := []int{1, 2, 3}

arrayPtr := (*[3]int)(unsafe.Pointer(&slice[0]))

fmt.Println(*arrayPtr)

}





2. Б использованиСм copy:



package main



import "fmt"



func main() {

slice := []int{1, 2, 3}

var array [3]int

copy(array[:], slice)

fmt.Println(array)

}





Π’Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ срСз ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡ Π² Ρ‚ΠΈΠΏΠ΅ map.



ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Go ΠΊΠ»ΡŽΡ‡ΠΈ ΠΌΠ°ΠΏΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ comparable, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ массив с фиксированным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ вмСсто срСза.