使用 type-switch (代码来自The way to go)
switch a := arg.(type) { // type switch
case Stringer: os.Stdout.WriteString(a.String())
case int: os.Stdout.WriteString(strconv.Itoa(a))
case string: os.Stdout.WriteString(a)
// more types
default: os.Stdout.WriteString("???")
}
这种写法能把 arg.(type)换成 arg.TypeOf()可以吗 还有一个就是这个反射是不是就类似于 java 里的方法重载,根据传入的类型选择不同的处理方式?
1
joesonw 2023-02-04 10:25:24 +08:00 via iPhone 1
|
2
joesonw 2023-02-04 10:28:44 +08:00 via iPhone 1
原理在这
https://draveness.me/golang/docs/part1-prerequisite/ch02-compile/golang-typecheck/ 这个手册也建议全文阅读,写的非常好。 |
3
lysS 2023-02-06 15:38:32 +08:00
就是断言啊,直接断也可以啊,strerVal,ok:=arg.(Stringer)
|