| // 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); } | |
| } | |