// $G $D/$F.go && $L $F.$A && ./$A.out // 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. package main type C struct { a int; x *func(p *C)int; } func g(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; }