You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中如何向可变参数函数传递不可变常量列表

Go向可变参数函数传递不可变列表的实现方案

你定义的state是固定长度的字符串数组,属于编译期确定的不可变序列,要传递给接受...interface{}的In函数,有两种实用方案:

  • 方案1:数组转切片后展开传递
    可变参数...interface{}本质等价于[]interface{}切片,先将不可变数组转为切片state[:],再通过...语法展开传递:

    var state = [...]string{
        "new",
        "submitted",
        "approved",
        "rejected",
    }
    
    // 调用In函数
    In(state[:]...)
    

    这里的切片state[:]指向原不可变数组,不会修改原数组内容,完全满足传递不可变列表的需求。

  • 方案2:直接传递整个数组
    若业务允许In函数接收单个数组参数(interface{}可以容纳任意类型),也可以直接传递整个数组:

    In(state)
    

    注意这种方式下,函数内部拿到的是完整的数组类型值,而非展开的多个字符串参数,需根据实际逻辑选择。

额外说明:Go中没有直接的字符串常量数组,使用固定长度数组[...]string已经是实现不可变字符串序列的合适方式,数组的长度和元素无法被动态修改(除非通过指针刻意修改,正常使用场景下可视为不可变)。

内容的提问来源于stack exchange,提问作者Avinash Kumar Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 20:40:44