1// run 2 3// Copyright 2009 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Test method invocation with pointer receivers and function-valued fields. 8 9package main 10 11type C struct { 12 a int; 13 x func(p *C)int; 14} 15 16func (this *C) f()int { 17 return this.a; 18} 19 20func 21main() { 22 var v int; 23 var c *C; 24 25 c = new(C); 26 c.a = 6; 27 c.x = g; 28 29 v = g(c); 30 if v != 6 { panic(v); } 31 32 v = c.x(c); 33 if v != 6 { panic(v); } 34 35 v = c.f(); 36 if v != 6 { panic(v); } 37} 38 39func g(p *C)int { 40 var v int; 41 42 v = p.a; 43 if v != 6 { panic(v); } 44 return p.a; 45} 46