猿问

你将如何访问传递给函数的底层数组,该函数期望在 Go 中有一个空接口?

因此,假设我们有以下形式的函数:


func WorkMagic(obj interface{}) interface{} {

    switch t := obj.(type) { 

    case string:

        // Do string magic

    default:

        // Do slice magic

    }

    ...

}

我希望obj是一个字符串或一个切片,我可以通过开关确定。在切片的情况下,我希望能够对任何任意切片进行排序工作,而不管类型如何。似乎实现此目的的最佳方法是以与本文中讨论的方式类似的方式使用 unsafe 包。


然而,这里的函数接受特定类型的切片 ( []string),而我希望能够处理任何切片。所以问题是,鉴于我接受一个空接口作为输入,我如何使用 unsafe.Pointer 访问底层切片/数组,以便能够循环并修改哪个值与哪个索引关联?


holdtom
浏览 210回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答