如何为“输入MyString字符串”执行Go / Golang类型断言?

时间:2016-12-14 20:57:19

标签: go

如果我想知道变量是否是string类型,我可以做一个类型断言:

S, OK:= value.(string)

如果value的类型为string,则OK为true,S为原始值。

但是这种类型的断言不适用于自定义字符串类型;例如:

type MyString string

对于此类型的变量,上面的类型断言返回false表示确定。

如何确定变量是字符串类型还是等效类型,而没有为每个这样的等效类型单独断言?

2 个答案:

答案 0 :(得分:5)

您无法对字符串执行类型断言或类型切换,因为确切类型不匹配。您最接近的是使用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)