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

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

问题描述:

How can I remove a user defined struct from a user defined slice of user defined structs?

Something like this:

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

var someStructs []someStruct

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

I probably should loop til I find the index, and then remove it. But how do I compare the structs?

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

类似这样的东西: p>

  type someStruct struct {
 someOtherStruct * typeOfOtherStruct 
 someInt int 
 someString string 
} 
 
var someStructs []  someStruct 
 
func someFunc(ss someStruct,ssSlice someStructs){
 // ..要从ssSlice中删除ss 
} 
  code>  pre> 
 
 

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

You find the element and make a new slice minus that index.

Example on Playground

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)
}