29.笔记go语言——函数多类型参数
如果希望在函数中传任意类型,可以指定类型为interface{}。下面是Go语言标准库中fmt.Printf()的函数原型:
func Printf(format string, args...interface{}) {
//...
}
用interface{}传递任意类型数据是Go语言的惯例用法。使用interface{}仍然是类型安全的,这和C/C++ 不太一样。
传入interface{}类型的数据。
代码:
package main
import "fmt"
func MyPrintf(args ...interface{}) {
for_, arg := range args {
switcharg.(type) {
caseint:
fmt.Println(arg,"is an int value.")
casestring:
fmt.Println(arg,"is a string value.")
caseint64:
fmt.Println(arg,"is an int64 value.")
default:
fmt.Println(arg,"is an unknown type.")
}
}
}
func main() {
varv1 int = 1
varv2 int64 = 234
varv3 string = "hello"
varv4 float32 = 1.234
MyPrintf(v1,v2, v3, v4)
}
执行:
1is an int value.
234is an int64 value.
hellois a string value.
1.234is an unknown type.