标签: go
如果我想知道变量是否是string类型,我可以做一个类型断言:
S, OK:= value.(string)
如果value的类型为string,则OK为true,S为原始值。
但是这种类型的断言不适用于自定义字符串类型;例如:
type MyString string
对于此类型的变量,上面的类型断言返回false表示确定。
如何确定变量是字符串类型还是等效类型,而没有为每个这样的等效类型单独断言?
答案 0 :(得分:5)
您无法对字符串执行类型断言或类型切换,因为确切类型不匹配。您最接近的是使用reflect包并检查值Kind:
reflect
Kind
var S string ref := reflect.ValueOf(value) if ref.Kind() == reflect.String { S = ref.String() }
答案 1 :(得分:0)
为什么使用断言,它用于接口。尝试转换,如:
type MyString string var s MyString = "test" var t string t = string(s)