如何检查接口是golang中的map[string]字符串



我想检查输出变量是否是map[string]字符串。输出应该是一个map[string]字符串,并且应该是ptr类型。

我检查了ptr值。但是我不知道如何检查map的键是否为字符串

对不起,我的英语不好

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

相关内容

  • 没有找到相关文章

最新更新