diff options
Diffstat (limited to 'src/sort/slice_go14.go')
-rw-r--r-- | src/sort/slice_go14.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/sort/slice_go14.go b/src/sort/slice_go14.go new file mode 100644 index 0000000..3bf5cbc --- /dev/null +++ b/src/sort/slice_go14.go @@ -0,0 +1,22 @@ +// 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) + } +} |