var cache atomic.Value
func setResToCache(res *utils.InterfaceMap) error {
resMap := res.ToInterfaceMap()
val := resMap[constant.key] // constant.key is a constant string
val, ok := val.(string)
if !ok {
return errors.New("type assertion failed")
}
someRes := model.someRes{
Title: val,
}
Cache.Store(someRes)
return nil
}
关于实用工具。接口地图
type InterfaceMap sync.Map
//ToInterfaceMap
func (im *InterfaceMap) ToInterfaceMap() map[interface{}]interface{} {
iim := make(map[interface{}]interface{})
m := (*sync.Map)(im)
m.Range(func(k, v interface{}) bool {
iim[k] = v
return true
})
return iim
}
我有一些类似于上面的代码,当我想要编写单元测试时,我有一个问题。
{
name: "test",
args: args{
res: &utils.InterfaceMap{
// How to assign k,v here
},
},
wantErr: false,
},
如何分配键,值?map[interface{}]interface{}
它实际上是,所以我使用断言,但传入的参数是 。map[string]stringmap[interface{}]interface{}
我想向映射中添加一些,以便我可以成功测试代码。string: string
小唯快跑啊
catspeake
相关分类