Как определить положение элемента, присутствующего в срезе?
Мне нужно что-то вроде следующего:
type intSlice []int
func (slice intSlice) pos(value int) int {
for p, v := range slice {
if (v == value) {
return p
}
}
return -1
}
Ответы:
К сожалению, для этого нет универсальной библиотечной функции. В Go нет простого способа написать функцию, которая может работать с любым фрагментом.
Ваша функция работает, хотя было бы немного лучше, если бы вы писали ее с использованием
range
.Если у вас есть байтовый срез, есть bytes.IndexByte .
источник
if element in collection: do_something()
Вы можете создать универсальную функцию идиоматическим способом:
И использование:
источник
-1
за ошибки идиоматичен, вместо этого следует использовать множественный возврат. (Я новичок в голанге, но это то, что я читал)Вы можете написать функцию;
Это возвращает индекс символа / строки, если он соответствует элементу. Если он не найден, возвращает -1.
источник
Для этого нет библиотечной функции. Вы должны писать код самостоятельно.
источник
источник
Другой вариант - отсортировать фрагмент с помощью пакета сортировки, а затем выполнить поиск того, что вы ищете:
печатает
Это работает для основных типов, и вы всегда можете реализовать интерфейс сортировки для своего собственного типа, если вам нужно поработать над частью других вещей. См. Http://golang.org/pkg/sort
Но все зависит от того, что вы делаете.
источник
for p, v := range ...
иif
. Просто хотел указать на вариант.