2014-04-20 12 views
5

Có lối tắt tiện dụng cho từ điển trong phương thức python - setdefault. Ví dụ, nếu tôi có dict đại diện cho ánh xạ từ chuỗi vào danh sách, tôi có thể viết một cái gì đó như thế nàyTương tự với setdefault của Python trong golang

if key not in map: 
    map[key] = [] 
map[key].append(value) 

này là quá dài dòng và cách pythonic hơn để làm điều này là như vậy:

map.setdefault(key, []).append(value) 

có một lớp defaultdict, bằng cách này.

Vì vậy, câu hỏi của tôi là - có điều gì đó tương tự cho các bản đồ trong Go không? Tôi thực sự khó chịu khi làm việc với các kiểu như map [string] [] int và tương tự.

Trả lời

6

Không có một điều như vậy đặc biệt cho bản đồ, nhưng nil là một lát có giá trị rỗng (mà có thể được sử dụng với append dựng sẵn) để đoạn mã sau:

x := make(map[string][]int) 
key := "foo" 
x[key] = append(x[key], 1) 

Sẽ làm việc bất kể key tồn tại trong bản đồ hay không.

1

Nó hoạt động tốt với bản đồ mặc định, play:

m := make(map[string][]int) 
m["test0"] = append(m["test0"], 10) 
m["test1"] = append(m["test1"], 10) 
m["test2"] = append(m["test2"], 10) 
+2

Nhưng nên lưu ý, rằng nó sẽ không làm việc cho bản đồ của bản đồ, bạn nên vẫn rõ ràng giá trị 'đồ make'. – maxbublis

Các vấn đề liên quan