如何为"类型MyString字符串"执行Go/Golang类型断言?

Mar*_*hio 2 go

如果我想知道变量是否是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.

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

Tim*_*per 5

您不能对字符串执行类型断言或类型切换,因为确切的类型不匹配.你可以得到的最接近的是使用reflect包并检查值Kind:

var S string
ref := reflect.ValueOf(value)
if ref.Kind() == reflect.String {
    S = ref.String()
}
Run Code Online (Sandbox Code Playgroud)