在 Go 中如何从结构的切片中删除一个项目
In Go How to delete an item from slice of an Struct
我的结构包含另一个结构的一部分。我已经添加了从切片中添加和删除项目的方法,但是添加是有效的,删除不是。我是 Go 的新手,所以我无法理解为什么切片重新分配没有反映在 struct
中
下面是我的代码的简短版本。 Link 到 PlayGoLang : http://play.golang.org/p/4NnGh3Dtzw
type BatteryTest struct {
Name, LocalConf, JdkPath, SysProps, LocalconfPath string
NumberOfNodes int
}
type Server struct {
Port int
TestQueue, CompletedTests, RunningTests []BatteryTest
}
func (this *Server) AddBatteryTest(test BatteryTest) error {
this.TestQueue = append(this.TestQueue, test)
return nil
}
func (this *Server) TakeBatteryTest() error {
length := len(this.TestQueue)
if length == 0 {
fmt.Println("Len==", 0)
return errors.New("Queue is empty")
}
slice := this.TestQueue
i := len(this.TestQueue) - 1
slice = append(slice[:i], slice[i+1:]...)
return nil
}
您没有将 slice
分配回 this.TestQueue
我的结构包含另一个结构的一部分。我已经添加了从切片中添加和删除项目的方法,但是添加是有效的,删除不是。我是 Go 的新手,所以我无法理解为什么切片重新分配没有反映在 struct
中下面是我的代码的简短版本。 Link 到 PlayGoLang : http://play.golang.org/p/4NnGh3Dtzw
type BatteryTest struct {
Name, LocalConf, JdkPath, SysProps, LocalconfPath string
NumberOfNodes int
}
type Server struct {
Port int
TestQueue, CompletedTests, RunningTests []BatteryTest
}
func (this *Server) AddBatteryTest(test BatteryTest) error {
this.TestQueue = append(this.TestQueue, test)
return nil
}
func (this *Server) TakeBatteryTest() error {
length := len(this.TestQueue)
if length == 0 {
fmt.Println("Len==", 0)
return errors.New("Queue is empty")
}
slice := this.TestQueue
i := len(this.TestQueue) - 1
slice = append(slice[:i], slice[i+1:]...)
return nil
}
您没有将 slice
分配回 this.TestQueue