Tôi đang ở chế độ Bắt đầu, làm việc với biểu diễn phản chiếu.Giá trị của một lát. Tôi có những điều sau đây:Đặt chỉ mục lát bằng cách sử dụng phản ánh trong Go
slice := reflect.MakeSlice(typ, len, cap)
Nếu tôi muốn có được giá trị thứ i từ slice
, nó đơn giản:
v := slice.Index(i) // returns a reflect.Value
Tuy nhiên, tôi dường như không thể tìm thấy một cách để thiết thứ i giá trị. reflect.Value
có rất nhiều phương pháp setter, ví dụ, nếu tôi đã có một bản đồ, m
, sau đây là có thể:
m.SetMapIndex(key, value) // key and value have type reflect.Value
Nhưng có vẻ không phải là một tương đương cho lát. Một suy nghĩ của tôi là có lẽ giá trị trả lại từ slice.Index(i)
thực sự là một con trỏ bằng cách nào đó, do đó, gọi v := slice.Index(i); v.Set(newV)
sẽ hoạt động? Tôi không chắc. Ý tưởng?
Hey, cảm ơn. Tôi đã tìm ra nó tho (loại nhảy súng khi đăng một câu hỏi: D). – joshlf
@ joshlf13 Tôi nhận thấy bạn đã hỏi một số câu hỏi 'phản ánh'. Kiểm tra 'xmlutil' được liên kết ở trên, cũng như một số gói mã hóa khác. Họ nên giúp đỡ khá nhiều. – Luke
Ok, sẽ làm. btw, nếu bạn quan tâm, lý do tôi đang sử dụng phản ánh rất nhiều là tôi đang viết một gói có tên "bất hợp pháp" cung cấp các chức năng để thực hiện các hành động không được phép kỹ thuật (như chức năng Bản đồ chung, so sánh hai con trỏ hàm, v.v.) Đó là một repo tư nhân trên github tại thời điểm này (chưa sẵn sàng cho sản xuất nào được nêu ra), nhưng nếu bạn có bất kỳ quan tâm đến việc đóng góp, tôi rất vui khi được giúp đỡ về nó. – joshlf