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