小编sax*_*sax的帖子

删除切片中的元素

Go不提供任何高级函数来从切片中删除元素.我编写了一个函数,它以一种通常在这里建议的方式从切片中删除给定值,但它产生了非常意外的结果.

package main

import "fmt"

type Area struct {
    Cells [2][]uint8
}
func main() {
    var area1 Area
    area1.Cells[1] = []uint8 {5, 6, 7}

    area2 := area1

    area1.Cells[1] = removeValueFromCell(area1.Cells[1], 6)

    fmt.Println(area1.Cells[1])
    fmt.Println(area2.Cells[1])
}


func removeValueFromCell(cell []uint8, value uint8) []uint8{
    var res = cell
    for i := 0; i < len(cell); i++ {
        if cell[i] == value {
            res = append(cell[:i], cell[i+1:]...)
        }
    }
    return res
}
Run Code Online (Sandbox Code Playgroud)

该计划输出:

[5 7] <- as expected

[5 7 7] <- why not [5 …
Run Code Online (Sandbox Code Playgroud)

arrays go slice

5
推荐指数
1
解决办法
213
查看次数

标签 统计

arrays ×1

go ×1

slice ×1