1// run 2 3// Copyright 2020 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7package main 8 9import "reflect" 10 11func sub(args []reflect.Value) []reflect.Value { 12 type A struct { 13 s int 14 t int 15 } 16 return []reflect.Value{reflect.ValueOf(A{1, 2})} 17} 18 19func main() { 20 f := reflect.MakeFunc(reflect.TypeOf((func() interface{})(nil)), sub).Interface().(func() interface{}) 21 c := make(chan bool, 100) 22 for i := 0; i < 100; i++ { 23 go func() { 24 for j := 0; j < 10000; j++ { 25 f() 26 } 27 c <- true 28 }() 29 } 30 for i := 0; i < 100; i++ { 31 <-c 32 } 33} 34