小编bob*_*bob的帖子

带参数的golang函数不会修改原始容量

为什么在编辑切片内部函数不适用长度更新?

快速响应:因为切片只是对原始数组的引用

正如您在下面的示例中所看到的,我有一个切片,将通过外部函数在值中修改,但是在您从函数返回值并将其重新分配给原始切片之前,将完全忽略追加操作.

为了改进示例,我添加了通过引用传递的函数并进行修改操作以提高解决方案的舒适度

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)

function append return-value go slice

-1
推荐指数
1
解决办法
1562
查看次数

标签 统计

append ×1

function ×1

go ×1

return-value ×1

slice ×1