Tôi đang cố tạo một bản đồ. Mặc dù mã biên dịch tốt, tôi nhận được lỗi runtime dưới đây:Lỗi thời gian chạy: "gán cho mục nhập trong bản đồ nil"
mapassign1: runtime·panicstring("assignment to entry in nil map");
tôi cố gắng để làm cho một mảng của Maps, với mỗi đồ chứa hai indicies, một "Id" và "Chủ đầu tư". Mã của tôi trông giống như sau:
for _, row := range rows {
var inv_ids []string
var inv_names []string
//create arrays of data from MySQLs GROUP_CONCAT function
inv_ids = strings.Split(row.Str(10), ",")
inv_names = strings.Split(row.Str(11), ",")
length := len(inv_ids);
invs := make([]map[string]string, length)
//build map of ids => names
for i := 0; i < length; i++ {
invs[i] = make(map[string]string)
invs[i]["Id"] = inv_ids[i]
invs[i]["Investor"] = inv_names[i]
}//for
//build Message and return
msg := InfoMessage{row.Int(0), row.Int(1), row.Str(2), row.Int(3), row.Str(4), row.Float(5), row.Float(6), row.Str(7), row.Str(8), row.Int(9), invs}
return(msg)
} //for
Tôi bước đầu nghĩ rằng điều gì đó dưới đây sẽ hoạt động, tuy nhiên điều đó cũng không khắc phục được sự cố. Bất kỳ ý tưởng?
invs := make([]make(map[string]string), length)
Mã của bạn hoạt động tốt đối với tôi: http: // chơi .golang.org/p/DaY5qdBGpy –
Nếu bản đồ của bạn được định nghĩa rất tốt mặc dù bạn có thể muốn sử dụng cấu trúc thay thế. struct {Id, chuỗi nhà đầu tư} –