修改传递给函数的切片
在 Go 中,参数是按值传递的,这意味着对函数内的切片进行更改函数不影响原始切片。当您想要修改累加器切片时,这可能会在使用递归函数时造成问题。
将指针传递给切片
要修改原始切片,您需要可以将指向切片的指针作为函数参数传递。这允许函数通过指针修改原始切片。
例如:
func myAppend(list *[]string, value string) { *list = append(*list, value) }
更新的解决方案
而不是传递指针对于切片,您可以从递归函数返回修改后的切片。这允许函数累积切片中的值并将最终结果返回给调用者。
func validate(obj Validatable, messages []ValidationMessage) ([]ValidationMessage, error) { // ... return validate(v, messages) }
惯用方法
将指针传递给切片或返回修改后的切片都是 Go 中的惯用方法。选择使用哪种方法取决于函数的具体要求。
注意:
使用指针修改切片时,重要的是要确保指针不为零,并且切片不会同时修改。
以上是如何修改Go函数中的切片而不影响原始切片?的详细内容。更多信息请关注PHP中文网其他相关文章!