如果我想知道变量是否是string类型,我可以做一个类型断言:
S, OK:= value.(string)
Run Code Online (Sandbox Code Playgroud)
如果value的类型为string,则OK为true,S为原始值.
但是这种类型的断言不适用于自定义字符串类型; 例如:
type MyString string
Run Code Online (Sandbox Code Playgroud)
对于此类型的变量,上面的类型断言返回false表示OK.
如何确定变量是字符串类型还是等效类型,而没有针对每个等效类型的单独断言?
您不能对字符串执行类型断言或类型切换,因为确切的类型不匹配.你可以得到的最接近的是使用reflect包并检查值Kind:
var S string
ref := reflect.ValueOf(value)
if ref.Kind() == reflect.String {
S = ref.String()
}
Run Code Online (Sandbox Code Playgroud)