1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 66676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
PackageMainImport("FMT""Reflect""unsafe")funcPrintint (iint) {FMT. Printf ("int i:%p\n", &i)}funcPrintInt2 (i *int) {FMT. Printf ("int i:%p\n", i)}funcPRINTSTR (Sstring) {FMT. Printf ("string s:%p\n", &s) HDR: = (*reflect. Stringheader) (unsafe. Pointer (&s)) Data: = HDR. datafmt.printf ("string s data:0x%x\n", data)}funcPRINTSTR2 (S *string) {FMT. Printf ("string s:%p\n", s) HDR: = (*reflect. Stringheader) (unsafe. Pointer (s)) Data: = HDR. datafmt.printf ("string s data:0x%x\n", data)}funcPrintslice (S []int) {FMT. Printf ("Slice s:%p\n", &s) HDR: = (*reflect. Sliceheader) (unsafe. Pointer (&s)) Data: = HDR. datafmt.printf ("Slice s data:0x%x\n", data)}funcPrintSlice2 (S *[]int) {FMT. Printf ("Slice s:%p\n", s) HDR: = (*reflect. Sliceheader) (unsafe. Pointer (s)) Data: = HDR. datafmt.printf ("Slice s data:0x%x\n", data)}typeSstruct{Iint}funcPrintstruct (s s) {FMT. Printf ("struct S:%p, I:%p\n", &s, & (S.I))}funcPrintStruct2 (s *s) {fmt. Printf ("struct S:%p, I:%p\n", &s, & (S.I))}funcPrintinterface (iInterface{}) {Fmt. Printf ("int i:%p\n", &i)}funcPrintInterface2 (iInterface{}) {s: = i. (s) fmt. Printf ("struct S:%p, I:%p\n", &s, & (S.I))}funcPrintInterface3 (iInterface{}) {s: = I. (*S) FMT. Printf ("struct S:%p, I:%p\n", S, & (S.I))}funcMain () {//test intI: =TenFmt. Printf ("int i:%p\n", &i) Printint (i) PrintInt2 (&i)//test StringS: ="Hello, World"Fmt. Printf ("\n\nstring s:%p\n", &s) HDR: = (*reflect. Stringheader) (unsafe. Pointer (&s)) Data: = HDR. datafmt.printf ("string s data:0x%x\n", data) Printstr (s) printStr2 (&s)//slice and MapSL: = []int{1,2,3,4,5}fmt. Printf ("\n\nslice s:%p\n", &SL) HDR2: = (*reflect. Sliceheader) (unsafe. Pointer (&SL)) data = HDR2. datafmt.printf ("Slice s data:0x%x\n", data) Printslice (SL) PrintSlice2 (&SL)//structSS: = s{i:Ten}SSP: = &ssfmt. Printf ("\n\nstruct s:%p, I:%p\n", SSP, & (ss. I)) printstruct (ss) PrintStruct2 (SSP)//interface to intFmt. Printf ("\n\nint I:%p\n", &i) printinterface (i)//interface to structFmt. Printf ("\n\nstruct s:%p, I:%p\n", SSP, & (ss. I)) PrintInterface2 (ss) PrintInterface3 (SSP)} |