MST

星途 面试题库

面试题:Go中如何利用空接口管理多种类型数据在切片中的存储与读取

在Go语言中,假设你要管理一个包含不同类型数据(如整数、字符串、结构体)的切片,使用空接口实现这个切片的创建,并编写函数将数据存入切片以及从切片中读取数据,展示如何处理类型断言来正确获取数据。
37.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

// 创建一个空接口类型的切片
var dataSlice []interface{}

// 存入数据到切片
func addDataToSlice(data interface{}) {
    dataSlice = append(dataSlice, data)
}

// 从切片中读取数据并处理类型断言
func readDataFromSlice() {
    for _, item := range dataSlice {
        switch value := item.(type) {
        case int:
            fmt.Printf("Integer: %d\n", value)
        case string:
            fmt.Printf("String: %s\n", value)
        case struct{ Name string; Age int }:
            fmt.Printf("Struct: Name - %s, Age - %d\n", value.Name, value.Age)
        default:
            fmt.Printf("Unknown type\n")
        }
    }
}

你可以在main函数中测试这些函数:

func main() {
    addDataToSlice(10)
    addDataToSlice("Hello")
    addDataToSlice(struct{ Name string; Age int }{Name: "John", Age: 30})

    readDataFromSlice()
}

上述代码首先创建了一个空接口类型的切片dataSliceaddDataToSlice函数用于将不同类型的数据添加到切片中。readDataFromSlice函数通过switch语句结合类型断言来处理从切片中读取的数据,并根据不同类型进行相应的输出。在main函数中进行了简单的测试,向切片中添加整数、字符串和结构体数据,然后读取并处理这些数据。