Cho em hỏi, vì sao append(a[:2], a[3:]...) mà giá trị trong slice a sau khi thực hiện câu lệnh này nó thay đổi vậy ạ. Em cảm ơn
Cho em hỏi, vì sao append(a[:2], a[3:]...) mà giá trị trong slice a sau khi thực hiện câu lệnh này nó thay đổi vậy ạ. Em cảm ơn
lệnh b:= append(a[:2], a[3:]...) sẽ thực hiện như hình dưới
lệnh append sẽ lấy 3 phần tử 4,5,6 thay vào 3 vị trí kế tiếp của a[:2] trong array gốc là a, nên sau lệnh đó thì a sẽ có các phần tử lần lượt là 1,2,4,5,6,6
b sẽ là slice có
và b vẫn trỏ đến đầu slice gốc là a. Em có thể thêm 1 lệnh
a[1] = 10
hoặc b[1] = 10
vào cuối để thấy rằng khi thay đổi a hoặc b thì sẽ đổi giá trị ở mảng gốc => cả a và b đều bị ảnh hưởng
nhưng nhớ rằng length của slice a là 6, còn b chỉ là 5, nên nếu thử b[5]=10 sẽ báo lỗi index out of range.
append sẽ thay 3 giá trị 4/5/6 vào 3 vị trí a[2], a[3], a[4]
a[:2] hiểu là 2 phần tử đầu tiên của mảng a => len sẽ là 2
a[:2] vẫn refer đến mảng gốc a, capacity sẽ tính từ vị trí mà nó đến (là vị trí a[0]) đến vị trí cuối cùng của mảng a (là a[5]) nên capacity là 6
a[3:] trỏ đến vị trí a[3], cap tính từ a[3] đến cuối của a (a[5]) nên cap là 3