Исходники и презентации

This commit is contained in:
2025-05-23 07:26:39 +03:00
parent aa948179d5
commit 02d8430a3a
514 changed files with 13773 additions and 0 deletions

View File

@ -0,0 +1,32 @@
package main
import (
"fmt"
"reflect"
)
func InvertSlice(args []reflect.Value) []reflect.Value {
inSlice, length := args[0], args[0].Len()
outSlice := reflect.MakeSlice(inSlice.Type(), 0, length)
for idx := length - 1; idx >= 0; idx-- {
element := inSlice.Index(idx)
outSlice = reflect.Append(outSlice, element)
}
return []reflect.Value{outSlice}
}
func Bind(value interface{}, fn func([]reflect.Value) []reflect.Value) {
invert := reflect.ValueOf(value).Elem()
invert.Set(reflect.MakeFunc(invert.Type(), fn))
}
func main() {
var invertInts func([]int) []int
Bind(&invertInts, InvertSlice)
fmt.Println(invertInts([]int{2, 3, 5}))
var invertStrs func([]string) []string
Bind(&invertStrs, InvertSlice)
fmt.Println(invertStrs([]string{"C++", "Go"}))
}