(items []int, elem int)
| 36 | } |
| 37 | |
| 38 | func SearchUnsafe(items []int, elem int) (i int) { |
| 39 | var last int |
| 40 | last, items[len(items)-1] = items[len(items)-1], elem |
| 41 | |
| 42 | p := unsafe.Pointer(&items[0]) |
| 43 | for *(*int)(p) != elem { |
| 44 | p = unsafe.Pointer(uintptr(p) + unsafe.Sizeof(elem)) |
| 45 | } |
| 46 | i = int((uintptr(p) - uintptr(unsafe.Pointer(&items[0]))) / unsafe.Sizeof(elem)) |
| 47 | if i+1 == len(items) && last != elem { |
| 48 | i++ |
| 49 | } |
| 50 | items[len(items)-1] = last |
| 51 | return i |
| 52 | } |
no outgoing calls