为了账号安全,请及时绑定邮箱和手机立即绑定

indexof的等价物

indexof的等价物

Go
心有法竹 2022-06-13 10:26:41
我试图找出 indexof 的等价物来获取数组中特定元素的位置 golang 数组中整数的用途。package mainimport (    "fmt")func main() {    fmt.Println("what")    arr := []int{1, 2, 3, 4, 2, 2, 3, 5, 4, 4, 1, 6}    i := IndexOf(2, arr)}
查看完整描述

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 上运行此代码。


查看完整回答
反对 回复 2022-06-13
?
ITMISS

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

}


查看完整回答
反对 回复 2022-06-13
?
慕的地8271018

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


查看完整回答
反对 回复 2022-06-13
?
一只萌萌小番薯

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))。切片必须按升序排序。


查看完整回答
反对 回复 2022-06-13
  • 4 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号