MST

星途 面试题库

面试题:Go中如何利用空接口优化简单数据流处理

假设你有一个包含不同类型数据(如整数、字符串)的切片,需要遍历该切片并根据数据类型进行不同的处理,使用空接口来实现这个功能,并解释实现思路。
14.2万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "fmt"
)

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

    for _, value := range data {
        switch v := value.(type) {
        case int:
            fmt.Printf("这是一个整数: %d\n", v)
        case string:
            fmt.Printf("这是一个字符串: %s\n", v)
        default:
            fmt.Printf("未知的数据类型\n")
        }
    }
}

实现思路

  1. 定义切片:使用空接口 interface{} 作为切片元素类型,这样切片可以存储任何类型的数据。在上述代码中,定义了一个 data 切片,并向其中添加了一个整数和一个字符串。
  2. 遍历切片:通过 for... range 循环遍历切片中的每一个元素。
  3. 类型断言与处理:在循环内部,使用 switch... type 语句进行类型断言。它可以在运行时判断空接口实际存储的数据类型,然后根据不同类型执行相应的处理逻辑。如果遇到未知类型,则执行 default 分支的逻辑。