gpt4 book ai didi

Golang slice 大小不断增加

转载 作者:数据小太阳 更新时间:2023-10-29 03:37:38 27 4
gpt4 key购买 nike

我正在学习 go 并正在构建一个小的示例控制台应用程序,但遇到了一个我无法解决的问题。

我正在构建的应用程序模拟一辆公共(public)汽车正常运行,接送乘客。我遇到的问题是函数 (letPassengersOff()) 似乎在增加乘客数量。

我已经复制了下面的乐趣,但您可以在这里找到应用程序的其余部分:BusRoute

谁能看出我做错了什么?

func letPassengersOff() {
departing, remaining := []Passenger

fmt.Println("Number of passengers:", len(b.Passengers))
for _, value := range b.Passengers {
if value.ID > 0 {
if value.EndLocation == b.CurrentStop {
fmt.Println("Passenger is getting off")
departing = append(departing, value)
} else {
fmt.Println("Passenger is staying on")
remaining = append(remaining, value)
}
}
}

fmt.Println("Remaining passengers: ", len(remaining))
//Setting to nil in the hope that the slice will be cleared
b.Passengers = nil
b.Passengers = remaining
departTheBus(departing)
}

最佳答案

您继续追加到 剩余的 slice 。为什么不将 slice 设置为当前的乘客。我假设“公共(public)汽车”应该已经有乘客了?

func letPassengersOff(b Bus) {

remaining := b.Passengers // assume this is a slice
departing := []Passenger

fmt.Println("Number of passengers:", len(b.Passengers))
for i, value := range b.Passengers {
if value.ID > 0 {
if value.EndLocation == b.CurrentStop {
fmt.Println("Passenger is getting off")

// remove the passenger from remaining and add to departing
remaining = append(a[:i], a[i+1:]...)
departing = append(departing, value)

} else {
fmt.Println("Passenger is staying on")
# Do nothing
}
}
}

fmt.Println("Remaining passengers: ", len(remaining))
departTheBus(departing)

关于Golang slice 大小不断增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31864170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com