如何检查接口是golang中的map [string]字符串
发布时间:2020-12-16 09:22:37 所属栏目:大数据 来源:网络整理
导读:我想检查输出变量是否为map [string]字符串. 输出应该是map [string]字符串,它应该是ptr. 我检查了ptr值.但我不知道如果是字符串与否,如何检查地图的关键. sorry for my bad english import ( "fmt" "reflect")func Decode(filename string,output interface
我想检查输出变量是否为map [string]字符串.
输出应该是map [string]字符串,它应该是ptr. 我检查了ptr值.但我不知道如果是字符串与否,如何检查地图的关键.
import ( "fmt" "reflect" ) func Decode(filename string,output interface{}) error { rv := reflect.ValueOf(output) if rv.Kind() != reflect.Ptr { return fmt.Errorf("Output should be a pointer of a map") } if rv.IsNil() { return fmt.Errorf("Output in NIL") } fmt.Println(reflect.TypeOf(output).Kind()) return nil } 解决方法
您根本不必使用反射.一个简单的类型断言就足够了;
unboxed,ok := output.(*map[string]string) if !ok { return fmt.Errorf("Output should be a pointer of a map") } if unboxed == nil { return fmt.Errorf("Output in NIL") } // if I get here unboxed is a *map[string]string and is not nil (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |