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  }