为了账号安全,请及时绑定邮箱和手机立即绑定

golang:如何从 []interface{} 别名获取子元素

golang:如何从 []interface{} 别名获取子元素

Go
精慕HU 2021-08-16 18:35:56
我为 []interface{} 定义了一个别名:type state []interface{}如何在 State 中获取子项:func test(s state) {    // How to get 1st element in s ?    // or How to convert s back to []interface{} ?}test([]interface{1, 2, 3})
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

test([]interface{1, 2, 3})错了,应该是test(state{1,2,3})。


您还可以像访问任何切片一样访问 s 中的第一个元素,使用s[x]:


type state []interface{}


func test(s state) {

    fmt.Println(s[0])

}


func main() {

    test(state{1, 2, 3})

}


查看完整回答
反对 回复 2021-08-16
?
千巷猫影

TA贡献1829条经验 获得超7个赞

package main


import (

    "fmt"

    "log"

)


type state []interface{}


func (s state) item(index int) (interface{}, error) {

    if len(s) <= index {

        return nil, fmt.Errorf("Index out of range")

    }


    return s[index], nil

}


func main() {

    st := state{1, 2, 3}


    // get sub item

    it, err := st.item(0)

    if err != nil {

        log.Fatal(err)

    }


    fmt.Printf("First Item %v\n", it)


    // cast back to []interface{}

    items := []interface{}(st)


    fmt.Println(items)

}


查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 346 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信