MST

星途 面试题库

面试题:Go语言中如何利用空接口实现函数多态性调用,请举例说明

在Go语言里,空接口可以用来实现函数的多态性调用。请编写一段代码,定义一个函数,该函数接受空接口类型的参数,并在函数内部根据实际传入的具体类型,做出不同的行为,以此展示多态性调用。并解释代码实现的原理。
34.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

func doSomething(i interface{}) {
    switch v := i.(type) {
    case int:
        fmt.Printf("接收到的是整数,值为: %d\n", v)
    case string:
        fmt.Printf("接收到的是字符串,值为: %s\n", v)
    default:
        fmt.Printf("不支持的类型: %T\n", v)
    }
}

代码原理解释

  1. 空接口定义:在Go语言中,空接口 interface{} 可以存储任何类型的值,因为它没有定义任何方法。
  2. 函数参数doSomething 函数接受一个空接口类型的参数 i,这意味着它可以接受任何类型的变量作为参数。
  3. 类型断言:在函数内部,使用 switch 语句结合类型断言 i.(type) 来判断传入参数 i 的实际类型。如果是 int 类型,打印整数的值;如果是 string 类型,打印字符串的值;如果是其他类型,则打印不支持的类型信息。这样通过同一个函数根据传入参数的不同类型做出不同行为,展示了多态性调用。