您可以将接口类型用作参数,在这种情况下,可以使用实现给定接口的任何类型来调用函数。在Go类型中,如果类型具有接口的方法,则它们会自动实现任何接口。因此,如果您想接受所有可能的类型,则可以使用空接口(
interface{}),因为所有类型都可以实现该接口。无需对您的功能进行其他修改。func print_out_type(x interface{}) string { switch v := x.(type) { case string: return "A string" case int32: return "An Integer" default: return "A default" }}您还可以使用反射包来研究接口变量的类型。例如:
func print_out_type(x interface{}) string { return reflect.TypeOf(x).String()}func main() { fmt.Println(print_out_type(42)) fmt.Println(print_out_type("foo"))}将打印
整型
串



