You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cointop/vendor/go4.org/reflectutil/swapper.go

22 lines
686 B
Go

// Copyright 2016 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package reflectutil
import "reflect"
// Swapper returns a function which swaps the elements in slice.
// Swapper panics if the provided interface is not a slice.
//
// Its goal is to work safely and efficiently for all versions and
// variants of Go: pre-Go1.5, Go1.5+, safe, unsafe, App Engine,
// GopherJS, etc.
func Swapper(slice interface{}) func(i, j int) {
v := reflect.ValueOf(slice)
if v.Kind() != reflect.Slice {
panic(&reflect.ValueError{Method: "reflectutil.Swapper", Kind: v.Kind()})
}
return swapper(v)
}