Bagaimana cara menentukan posisi elemen yang ada dalam potongan?
Saya butuh sesuatu seperti berikut:
type intSlice []int
func (slice intSlice) pos(value int) int {
for p, v := range slice {
if (v == value) {
return p
}
}
return -1
}
Jawaban:
Maaf, tidak ada fungsi perpustakaan umum untuk melakukan ini. Go tidak memiliki cara langsung untuk menulis fungsi yang dapat beroperasi pada slice apa pun.
Fungsi Anda berfungsi, meskipun akan sedikit lebih baik jika Anda menulisnya menggunakan
range
.Jika Anda kebetulan memiliki potongan byte, ada byte.IndexByte .
sumber
if element in collection: do_something()
Anda dapat membuat fungsi generik dengan cara idiomatic go:
Dan penggunaan:
sumber
-1
kesalahan itu idiomatis, seharusnya menggunakan pengembalian ganda sebagai gantinya. (Saya baru mengenal golang tapi itulah yang saya baca)Anda bisa menulis sebuah fungsi;
Ini mengembalikan indeks karakter / string jika cocok dengan elemen. Jika tidak ditemukan, mengembalikan -1.
sumber
Tidak ada fungsi perpustakaan untuk itu. Anda harus membuat kode sendiri.
sumber
sumber
Opsi lainnya adalah mengurutkan potongan menggunakan paket sortir, lalu cari hal yang Anda cari:
cetakan
Ini berfungsi untuk tipe dasar dan Anda selalu dapat mengimplementasikan antarmuka sortir untuk tipe Anda sendiri jika Anda perlu mengerjakan sepotong hal lain. Lihat http://golang.org/pkg/sort
Tergantung pada apa yang Anda lakukan.
sumber
for p, v := range ...
danif
. Hanya ingin menunjukkan opsi.