gpt4 book ai didi

go - 如何制作可变类型 slice

转载 作者:行者123 更新时间:2023-12-01 21:15:43 25 4
gpt4 key购买 nike

我通过做一些我已经用其他语言完成的问题来学习围棋。
所以问题之一是: -

  • 求 Array 中元素的总和
    Arr = [1,2,[7,8,3],1,[3,[2,[4,5]],6]]

  • 我试过制作一个接口(interface)类型数组,但这也没有用
    func ProdSum(prods interface{},sum int ,depth int){
    for id,val:=range prods{
    if isArray(val){
    ProdSum(val,sum,depth)
    }
    }

    }
    type arr []interface{}
    func main(){
    arra:=arr{5,2,arr{7,-1},3,arr{6,arr{-13,8},4}}
    ProdSum(arra,0,1)
    }
    Error :

    ./prodsum.go:16:14: cannot range over prods (type interface {})

    最佳答案

    使用 type assertiontype switch确定一个值是 slice 还是整数。以下是使用类型开关的方法:

    func sum(value interface{}) int {
    switch value := value.(type) {
    case arr:
    var result int
    for _, v := range value {
    result += sum(v)
    }
    return result
    case int:
    return value
    default:
    panic("type not handled")
    }
    }
    像这样称呼它:
    a := arr{5, 2, arr{7, -1}, 3, arr{6, arr{-13, 8}, 4}}
    n := sum(a)
    Run it on the playground .

    关于go - 如何制作可变类型 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62768168/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com