4 回答
TA贡献1858条经验 获得超8个赞
写一个函数。这是一个示例,假设IndexOf返回数字的第一个索引,如果没有找到则返回 -1。
// IndexOf returns the first index of needle in haystack
// or -1 if needle is not in haystack.
func IndexOf(haystack []int, needle int) int {
for i, v := range haystack {
if v == needle {
return i
}
}
return -1
}
在 Go Programming Language Playground 上运行此代码。
TA贡献1871条经验 获得超8个赞
在 go 中没有通用的库函数可以为您执行此操作。
但是,如果您使用的是字节切片,则可以使用IndexByte(b []byte, c byte) int。
或者您可以编写一个快速函数来为您执行此操作:
func indexOf(arr []int, val int) int {
for pos, v := range arr {
if v == val {
return pos
}
}
return -1
}
TA贡献1796条经验 获得超4个赞
package main
import "fmt"
func IndexOf(arr []int, candidate int) int {
for index, c := range arr {
if c == candidate {
return index
}
}
return -1
}
func main() {
fmt.Println("what")
arr := []int{1, 2, 3, 4, 2, 2, 3, 5, 4, 4, 1, 6}
i := IndexOf(arr, 2)
fmt.Println(i)
}
添加方法 IndexOf 进行搜索,这是一种线性搜索方法。
参考: https: //play.golang.org/p/Hp6Dg--XoIV
TA贡献1795条经验 获得超7个赞
IndexOf在 Go中没有等价的 for 。你需要自己实现一个。但是如果你有排序的 Ints 数组,你可以使用sort.SearchInts如下所示。
package main
import (
"fmt"
"sort"
)
func main() {
fmt.Println(sort.SearchInts([]int{2,3,4,5,9,10,11}, 5))
}
同样来自godoc:
SearchInts 在已排序的整数切片中搜索 x 并返回 Search 指定的索引。如果 x 不存在,则返回值是插入 x 的索引(它可能是 len(a))。切片必须按升序排序。
- 4 回答
- 0 关注
- 159 浏览
添加回答
举报
