По какой-то причине в Go оба среза меняются, если я заменяю любой из них
package main
import (
"fmt"
"sort"
)
func deleteAr(s []string, index int) []string{
return append(s[:index], s[index+1:]...)
}
func main() {
var letters =[] string {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"}
fmt.Println("original")
fmt.Println(letters)
var fletters =[] string {}
letters= deleteAr(letters, sort.StringSlice(letters).Search("E"))
fletters=letters
fmt.Println("after assigning but nothing changed in either slices")
fmt.Println(letters)
fmt.Println(fletters)
fletters = deleteAr(fletters , sort.StringSlice(fletters).Search("A"))
fletters = append(fletters , "b")
fmt.Println("after assigning deleting A and appending b to only fletters, but why letters changed too?")
fmt.Println(letters)
fmt.Println(fletters)
}
результат:
оригинал
[AB C DEFGHIJKLMNOPQRSTUVWX YZ]
после назначения, но ничего не изменилось ни в одном из срезов
[AB C DFGHIJKLMNOPQRSTUVWXY Z]
[AB C DFWHYJFXFJFXVFXWRXJFXVFXFXVFXFXVFXWRXJFXWRJRJKJKJVRKKHT
после назначения удаления A и добавления b только к флеттерам, но почему буквы тоже изменились?
[B C DFGHIJKLMNOPQRSTUVWXY Z b]
[B C DFGHIJKLMNOPQRSTUVWXY z]