繁体   English   中英

如何从 Go 中的结构切片中删除结构?

[英]How can I remove a struct from a slice of structs in Go?

如何从用户定义结构的用户定义切片中删除用户定义结构?

像这样的东西:

type someStruct struct {
    someOtherStruct *typeOfOtherStruct
    someInt         int
    someString      string
}

var someStructs []someStruct

func someFunc(ss someStruct, ssSlice someStructs) {
    // ..  want to remove ss from ssSlice
}

我可能应该循环直到找到索引,然后将其删除。 但是我如何比较结构?

您找到该元素并制作一个减去该索引的新切片。

操场上的例子

package main

import "fmt"

type someStruct struct {
    someInt    int
    someString string
}

func removeIt(ss someStruct, ssSlice []someStruct) []someStruct {
    for idx, v := range ssSlice {
        if v == ss {
            return append(ssSlice[0:idx], ssSlice[idx+1:]...)
        }
    }
    return ssSlice
}
func main() {
    someStructs := []someStruct{
        {1, "one"},
        {2, "two"},
        {3, "three"},
    }
    fmt.Println("Before:", someStructs)
    someStructs = removeIt(someStruct{2, "two"}, someStructs)
    fmt.Println("After:", someStructs)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM