| // Copyright 2017 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. | |
| // +build !go1.8 | |
| package sort | |
| import "reflect" | |
| var reflectValueOf = reflect.ValueOf | |
| func reflectSwapper(x interface{}) func(int, int) { | |
| v := reflectValueOf(x) | |
| tmp := reflect.New(v.Type().Elem()).Elem() | |
| return func(i, j int) { | |
| a, b := v.Index(i), v.Index(j) | |
| tmp.Set(a) | |
| a.Set(b) | |
| b.Set(tmp) | |
| } | |
| } |