yes i used the code from this page:

func Float64bits(f float64) uint64 {
        return *(*uint64)(unsafe.Pointer(&f))
}

adapted to my use case

*(*int)(unsafe.Pointer(limit)


Le lundi 6 août 2018 19:53:07 UTC+2, Ian Lance Taylor a écrit :
>
> On Sun, Aug 5, 2018 at 10:29 PM, nicolas_boiteux via golang-nuts 
> <[email protected] <javascript:>> wrote: 
> > 
> > thanks you, the A3 community finaly help me to solve the last problem 
> > 
> >     for index := C.int(0); index < argc; index++ { 
> >         out = append(out, C.GoString(*argv)) 
> >         argv = (**C.char)(unsafe.Pointer(uintptr(unsafe.Pointer(argv)) + 
> > offset)) 
> >     } 
> > 
> > I dont really understand why but it seems there was a problem with my 
> > casting method with unsafe 
> > 
> > *(*int)(unsafe.Pointer(limit) 
>
> See https://golang.org/pkg/unsafe for the exact ways that you are 
> permitted to use unsafe.Pointer. 
>
> Ian 
>
> > Le dimanche 5 août 2018 15:02:47 UTC+2, Jan Mercl a écrit : 
> >> 
> >> On Sun, Aug 5, 2018 at 2:50 PM nicolas_boiteux via golang-nuts 
> >> <[email protected]> wrote: 
> >> 
> >> > not sure to understand cause the iteration in your example is done on 
> os 
> >> > interface from golang not from c char array :( 
> >> 
> >> Not sure what you mean by 'os interface'. Here's the part that iterates 
> >> **C.char, except pointers are transformed to uintptrs. Other that that 
> it's 
> >> what you're, I think, after 
> >> 
> >> // Xmain is defined at main.c:3:5 
> >> func Xmain(tls crt.TLS, _argc int32, _argv uintptr /* **int8 */) (r 
> int32) 
> >> { 
> >> var _p uintptr // **int8 
> >> 
> >> _p = _argv 
> >> _1: 
> >> if (*(*uintptr)(unsafe.Pointer(_p))) == 0 { 
> >> goto _3 
> >> } 
> >> 
> >> crt.Xprintf(tls, ts+0 /* "%s\n" */, *(*uintptr)(unsafe.Pointer(_p))) 
> >> _p += 8 
> >> goto _1 
> >> 
> >> _3: 
> >> return r 
> >> } 
> >> 
> >> Manually converting (untested again): 
> >> 
> >> func foo(argv **C.char) []string { 
> >>         var a []string 
> >>         for p := argv; *p != nil; *(*uintptr)(unsafe.Pointer(p)) += 
> >> unsafe.Sizeof(*p) { 
> >>                 a = append(a, GoString(*p)) 
> >>         } 
> >>         rerurn a 
> >> } 
> >> 
> >> 
> >> -- 
> >> 
> >> -j 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "golang-nuts" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to [email protected] <javascript:>. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to