github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug322.dir/main.go (about)

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package main
     6  
     7  import "./lib"
     8  
     9  type I interface {
    10  	M()
    11  }
    12  
    13  type PI interface {
    14  	PM()
    15  }
    16  
    17  func main() {
    18  	var t lib.T
    19  	t.M()
    20  	t.PM()
    21  
    22  	// This is still an error.
    23  	// var i1 I = t
    24  	// i1.M()
    25  	
    26  	// This combination is illegal because
    27  	// PM requires a pointer receiver.
    28  	// var pi1 PI = t
    29  	// pi1.PM()
    30  
    31  	var pt = &t
    32  	pt.M()
    33  	pt.PM()
    34  
    35  	var i2 I = pt
    36  	i2.M()
    37  
    38  	var pi2 PI = pt
    39  	pi2.PM()
    40  }