github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/interfaces/i2i_conversion.go (about)

     1  // RUN: llgo -o %t %s
     2  // RUN: %t 2>&1 | FileCheck %s
     3  
     4  // CHECK: 666
     5  // CHECK-NEXT: The Beast
     6  
     7  package main
     8  
     9  type Numbered interface {
    10  	Number() int
    11  }
    12  
    13  type Named interface {
    14  	Name() string
    15  }
    16  
    17  type Beast struct{}
    18  
    19  func (b *Beast) Number() int {
    20  	return 666
    21  }
    22  
    23  func (b *Beast) Name() string {
    24  	return "The Beast"
    25  }
    26  
    27  func main() {
    28  	var b Beast
    29  	var numbered Numbered = &b
    30  	var named Named = numbered.(Named)
    31  	println(numbered.Number())
    32  	println(named.Name())
    33  }