// 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 pointers and the . (selector) operator on structs. package main type x2 struct { a,b,c int; d int; }; var g1 x2; var g2 struct { a,b,c int; d x2; }; func main() { var x int; var s1 *x2; var s2 *struct { a,b,c int; d x2; }; s1 = &g1; s2 = &g2; s1.a = 1; s1.b = 2; s1.c = 3; s1.d = 5; s2.a = 7; s2.b = 11; s2.c = 13; s2.d.a = 17; s2.d.b = 19; s2.d.c = 23; s2.d.d = 20; if(s2.d.c != 23) { panic(1); } if(g2.d.c != 23) { panic(2); } x = s1.a + s1.b + s1.c + s1.d + s2.a + s2.b + s2.c + s2.d.a + s2.d.b + s2.d.c + s2.d.d; if(x != 121) { panic(x); } }