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
相关产品推荐
相关产品推荐

