modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/ken/ptrvar.go (about) 1 // run 2 3 // Copyright 2009 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 // Test pointers and the . (selector) operator on structs. 8 9 package main 10 11 type x2 struct { a,b,c int; d int; }; 12 var g1 x2; 13 var g2 struct { a,b,c int; d x2; }; 14 15 func 16 main() { 17 var x int; 18 var s1 *x2; 19 var s2 *struct { a,b,c int; d x2; }; 20 21 s1 = &g1; 22 s2 = &g2; 23 24 s1.a = 1; 25 s1.b = 2; 26 s1.c = 3; 27 s1.d = 5; 28 29 s2.a = 7; 30 s2.b = 11; 31 s2.c = 13; 32 s2.d.a = 17; 33 s2.d.b = 19; 34 s2.d.c = 23; 35 s2.d.d = 20; 36 37 if(s2.d.c != 23) { panic(1); } 38 if(g2.d.c != 23) { panic(2); } 39 40 x = s1.a + 41 s1.b + 42 s1.c + 43 s1.d + 44 45 s2.a + 46 s2.b + 47 s2.c + 48 s2.d.a + 49 s2.d.b + 50 s2.d.c + 51 s2.d.d; 52 53 if(x != 121) { panic(x); } 54 }