Como determinar a posição de um elemento presente na fatia?
Preciso de algo como o seguinte:
type intSlice []int
func (slice intSlice) pos(value int) int {
for p, v := range slice {
if (v == value) {
return p
}
}
return -1
}
Respostas:
Não há função de biblioteca genérica para fazer isso. Go não tem uma maneira direta de escrever uma função que possa operar em qualquer slice.
Sua função funciona, embora seja um pouco melhor se você a escrever usando
range
.Se acontecer de você ter uma fatia de byte, haverá bytes.IndexByte .
fonte
if element in collection: do_something()
Você pode criar uma função genérica de maneira idiomática:
E uso:
fonte
-1
para um erro seja idiomático, ele deve usar o retorno múltiplo. (Eu sou novo no golang, mas é o que li)Você pode escrever uma função;
Isso retorna o índice de um caractere / string se corresponder ao elemento. Se não for encontrado, retorna -1.
fonte
Não há função de biblioteca para isso. Você tem que codificar sozinho.
fonte
fonte
Outra opção é classificar a fatia usando o pacote de classificação e, em seguida, pesquisar o que você está procurando:
estampas
Isso funciona para os tipos básicos e você sempre pode implementar a interface de classificação para seu próprio tipo se precisar trabalhar em uma fatia de outras coisas. Veja http://golang.org/pkg/sort
Depende do que você está fazendo.
fonte
for p, v := range ...
eif
. Só queria apontar a opção.