Golang được phát triển từ C nên nó có khái niệm pointer. Nếu bạn chưa biết Pointer là gì thì hãy xem video này nhé: https://www.youtube.com/watch?v=zuegQmMdy8M.

Dưới đây là đoạn code sai khi của tôi khi cố gắng clone một slide:

a := []string{"a", "b", "c"}
b := a
b[0] = "x"
fmt.Println(a) // [x b c]
fmt.Println(b) // [x b c]

b := a ở trên thực chất là set giá trị cho b cùng trỏ đến một vùng nhớ với a nên khi thay đổi phần tử của b thì a cũng thay đổi theo. Vì vậy khi muốn clone một slide ta phải làm như sau:

a := []string{"a", "b", "c"}
b := append([]string{}, a...)
b[0] = "x"
fmt.Println(a) // [a b c]
fmt.Println(b) // [x b c]

 

0 0 votes
Article Rating