【发布时间】:2017-08-02 19:29:18
【问题描述】:
我检查了一个现有的answer,但它与我的情况不同。
我需要根据Compare 函数在索引处提取一个元素并在运行时跳出for 循环。
问题:
如果在 0 index 找到要采摘的元素,index-1 将抛出范围错误,如果 index+1 大于 len(elements),则类似。
问题:实现上述目标的最佳简洁方法是什么?
for index, element := range elements {
if element.Compare() == true {
elements = append(elements[:index-1], elements[index+1:]...)
break
}
}
尝试
for index, element := range elements {
if element.Compare() == true {
if len(elements) > 1 {
elements = append(elements[:index-1], elements[index+1:]...)
} else if len(elements) == 1 {
delete(elements, 0)
}
break
}
}
尝试 2 Playground 有任何改进/建议吗?
这个想法是将剩余的元素从开头复制到索引,然后复制之后的任何元素。
var elements = []string {"a", "b", "c", "d"}
fmt.Println(elements)
for index, element := range elements {
if element == "c" {
var temp = elements[:index]
for i := index + 1; i<len(elements); i++ {
temp = append(temp, elements[i])
}
elements = temp
break
}
}
fmt.Println(elements)
【问题讨论】:
-
你的问题是什么?
-
从切片中提取元素的最佳方法是什么
-
您是否尝试删除单个元素?那个在索引
index? -
是的,只有单个元素,然后打破