Open dave-wind opened 8 months ago
type GoObject = map[string]interface{} func main() { var para = GoObject{ "File": make([]GoObject, 1), // []T 泛型类型 且使用make len =1 默认分配first 元素为 空对象 } // 创建一个新的 map[string]interface{} 类型的元素 newElement := GoObject{ "key1": "value1", "key2": 42, "key3":1, } var newKey = "demo" // 将新的元素添加到 "File" 字段的切片中 para["File"].([]GoObject)[0] = newElement // 动态增加key para[newKey] = 1 fmt.Println(para["File"].([]GoObject)[0]) } 小结: 1.go强类型语言 interface{} 为任意类型;赋值的时候 需要类型断言 para["File"].([]GoObject) 否则 para["File"] 默认是interface{} (定义Para的时候 值的类型) ;赋值当然会报错 2.使用make函数 预先分配切片长度;如果设置len=0;则使用索引赋值 会报错。 var arr = make([]GoObject, 0) arr[0] = 123 // 报错 3. 对于 make 函数初始化的切片 当 len = 0 可以用append 追加元素; !!!但追加完 是俩条数据哦 默认 make 初始化 切片 len =0 会有一个空itm;😂 eg: para["File"] = append(para["File"].([]GoObject), newElement) fmt.Println(para["File"]) 4.什么时候需要类型断言? 使用的时候 就需要;断言 再 赋值 5. 如果切片数组 只有一条数据 var para = GoObject{ "File": make([]GoObject, 1), } // 索引 0 修改 para["File"].([]GoObject)[0] = GoObject{ "File": file, "FileName": "txt", }
记录小问题
map[string]interface{} CRUD