|  | // run | 
|  |  | 
|  | // Copyright 2020 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. | 
|  |  | 
|  | // Similar to reflectmethod5.go, but for reflect.Type.MethodByName. | 
|  |  | 
|  | package main | 
|  |  | 
|  | import "reflect" | 
|  |  | 
|  | var called bool | 
|  |  | 
|  | type foo struct{} | 
|  |  | 
|  | func (foo) X() { called = true } | 
|  |  | 
|  | var h = reflect.Type.MethodByName | 
|  |  | 
|  | func main() { | 
|  | v := reflect.ValueOf(foo{}) | 
|  | m, ok := h(v.Type(), "X") | 
|  | if !ok { | 
|  | panic("FAIL") | 
|  | } | 
|  | f := m.Func.Interface().(func(foo)) | 
|  | f(foo{}) | 
|  | if !called { | 
|  | panic("FAIL") | 
|  | } | 
|  | } |