github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/methods/methodvalues.go (about) 1 // RUN: llgo -o %t %s 2 // RUN: %t 2>&1 | FileCheck %s 3 4 // CHECK: 246 5 // CHECK-NEXT: T2.f() 6 // CHECK-NEXT: 10 7 // CHECK-NEXT: abc 8 9 package main 10 11 type T1 struct { 12 value int 13 } 14 15 func (t *T1) f(m int) int { 16 return m * t.value 17 } 18 19 func f1() { 20 var t T1 21 var f func(int) int = t.f 22 t.value = 2 23 println(f(123)) 24 } 25 26 type T2 struct{} 27 28 func (T2) f() { 29 println("T2.f()") 30 } 31 32 func f2() { 33 var f func() = T2{}.f 34 f() 35 } 36 37 type T3 complex128 38 39 func (t T3) f() int { 40 return int(real(t)) 41 } 42 43 func f3() { 44 var f func() int = T3(10).f 45 println(f()) 46 } 47 48 type T4 string 49 50 func (t T4) f() string { 51 return string(t) 52 } 53 54 func f4() { 55 var f func() string = T4("abc").f 56 println(f()) 57 } 58 59 func main() { 60 f1() 61 f2() 62 f3() 63 f4() 64 }