summaryrefslogtreecommitdiffstats
path: root/src/sort/slice_go14.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/sort/slice_go14.go')
-rw-r--r--src/sort/slice_go14.go22
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)
+ }
+}