MST

星途 面试题库

面试题:Go中如何在空接口数据结构中区分不同类型的数据

在Go语言中,我们经常会使用空接口来存储不同类型的数据。请描述如何在一个包含多种类型数据的空接口切片中,准确地识别并处理每种数据类型。例如,假设有一个空接口切片 []interface{} ,其中可能包含 int、string、自定义结构体等类型,编写代码实现对切片中每种类型数据的区分和处理。
48.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

// 自定义结构体
type CustomStruct struct {
    Name string
}

func main() {
    var data []interface{}
    data = append(data, 10, "hello", CustomStruct{Name: "example"})

    for _, item := range data {
        switch value := item.(type) {
        case int:
            fmt.Printf("这是一个整数: %d\n", value)
        case string:
            fmt.Printf("这是一个字符串: %s\n", value)
        case CustomStruct:
            fmt.Printf("这是一个自定义结构体: %v\n", value)
        default:
            fmt.Println("未知类型")
        }
    }
}

在上述代码中,我们定义了一个包含多种类型数据的空接口切片 data。然后通过 switch - type 语句对切片中的每个元素进行类型断言,从而区分不同的数据类型并进行相应的处理。switch - type 语句会根据 item 的实际类型执行对应的分支。如果类型不匹配任何分支,则执行 default 分支。