|  | // run | 
|  |  | 
|  | // Copyright 2009 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // Test method invocation with pointer receivers and function-valued fields. | 
|  |  | 
|  | package main | 
|  |  | 
|  | type C struct { | 
|  | a	int; | 
|  | x	func(p *C)int; | 
|  | } | 
|  |  | 
|  | func (this *C) f()int { | 
|  | return this.a; | 
|  | } | 
|  |  | 
|  | func | 
|  | main() { | 
|  | var v int; | 
|  | var c *C; | 
|  |  | 
|  | c = new(C); | 
|  | c.a = 6; | 
|  | c.x = g; | 
|  |  | 
|  | v = g(c); | 
|  | if v != 6 { panic(v); } | 
|  |  | 
|  | v = c.x(c); | 
|  | if v != 6 { panic(v); } | 
|  |  | 
|  | v = c.f(); | 
|  | if v != 6 { panic(v); } | 
|  | } | 
|  |  | 
|  | func g(p *C)int { | 
|  | var v int; | 
|  |  | 
|  | v = p.a; | 
|  | if v != 6 { panic(v); } | 
|  | return p.a; | 
|  | } |