如果我想知道一个变量是否为字符串类型,我可以进行类型断言:
S, OK:= value.(string)
如果value的类型是字符串,则OK为真,S是原始值。
但是这种类型断言无法适用于自定义字符串类型,例如:
type MyString string
对于这种类型的变量,上面的类型断言对于OK返回false。
如何确定变量是字符串类型还是等效类型,而无需针对每个等效类型进行单独断言?
如果我想知道一个变量是否为字符串类型,我可以进行类型断言:
S, OK:= value.(string)
如果value的类型是字符串,则OK为真,S是原始值。
但是这种类型断言无法适用于自定义字符串类型,例如:
type MyString string
对于这种类型的变量,上面的类型断言对于OK返回false。
如何确定变量是字符串类型还是等效类型,而无需针对每个等效类型进行单独断言?
S
的类型与value
的类型不同。 - user142162为什么要使用断言?它是为接口设计的。尝试进行转换,例如:
type MyString string
var s MyString = "test"
var t string
t = string(s)
value.(string)
来测试是否为字符串,或者使用value.(MyString)
来测试是否为MyString类型,但是不能同时进行两种测试。你需要使用类型切换。请再次仔细阅读Go之旅的教程,特别是关于类型切换的章节:https://tour.golang.org/methods/16等。 - Volker