为什么在编辑切片内部函数不适用长度更新?
快速响应:因为切片只是对原始数组的引用
正如您在下面的示例中所看到的,我有一个切片,将通过外部函数在值中修改,但是在您从函数返回值并将其重新分配给原始切片之前,将完全忽略追加操作.
为了改进示例,我添加了通过引用传递的函数并进行修改操作以提高解决方案的舒适度
package main
import (
"fmt"
)
var sli = make([]int,8)
func main() {
fmt.Println("START STATUS_____")
fmt.Println("slice",sli)
fmt.Println(" cap:", cap(sli))
fmt.Println(" len:", len(sli))
editSli(sli)
fmt.Println("EDIT RESULT STATUS_____")
fmt.Println("slice",sli)
fmt.Println(" cap:", cap(sli))
fmt.Println(" len:", len(sli))
sli = updateSli(sli)
fmt.Println("UPDATE RESULT STATUS_____")
fmt.Println("slice",sli)
fmt.Println(" cap:", cap(sli))
fmt.Println(" len:", len(sli))
sli = append(sli, 15, 16, 17)
fmt.Println("DIRECT APPEND RESULT STATUS_____")
fmt.Println("slice",sli)
fmt.Println(" cap:", cap(sli))
fmt.Println(" len:", len(sli))
sli[13] = 99
fmt.Println("DIRECT ASSIGNMENT OF LAST ELEMENT (13°) STATUS_____")
fmt.Println("slice",sli)
fmt.Println(" cap:", …Run Code Online (Sandbox Code Playgroud)