MST

星途 面试题库

面试题:Go中如何利用接口和反射实现动态类型断言

请编写一段Go代码,利用接口和反射来实现对一个接口变量的动态类型断言,并根据不同类型执行不同的操作。例如,假设接口类型为`interface{}`,传入的实际值可能是`int`、`string` 或者自定义结构体,根据不同类型打印相应的信息。
24.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
    "reflect"
)

func main() {
    var i interface{}
    i = 10 // 可以修改为 string 或者自定义结构体进行测试

    value := reflect.ValueOf(i)
    switch value.Kind() {
    case reflect.Int:
        fmt.Printf("类型为 int,值为 %d\n", value.Int())
    case reflect.String:
        fmt.Printf("类型为 string,值为 %s\n", value.String())
    case reflect.Struct:
        fmt.Printf("类型为结构体,值为 %v\n", value.Interface())
    default:
        fmt.Printf("未知类型 %v\n", value.Kind())
    }
}