On Wed, Apr 3, 2019 at 11:50 PM <mountain...@gmail.com> wrote:
>
> hehe, thanks, so if i want understand deeply, need to look up gc code?

No, the language spec is at https://golang.org/ref/spec.

Ian

> 在 2019年4月3日星期三 UTC+8下午10:34:57,Ian Lance Taylor写道:
>>
>> On Wed, Apr 3, 2019 at 6:32 AM <mount...@gmail.com> wrote:
>> >
>> > thanks! v must be a value copy,Is this determined by the compiler?
>>
>> It's determined by the language definition.
>>
>> Ian
>>
>>
>> > 在 2019年4月3日星期三 UTC+8下午7:57:26,Marvin Renich写道:
>> >>
>> >> * mount...@gmail.com <mount...@gmail.com> [190403 05:10]:
>> >> > package main
>> >> >
>> >> > func main() {
>> >> > b := []int{1}
>> >> >
>> >> > bb := make([]*int, 0, 1)
>> >> > for k, v := range b {
>> >>
>> >> The above range clause will assign to k the index of the current
>> >> element, and it will assign to v a copy (as if v = b[k]) of the element
>> >> at that index.
>> >>
>> >> Go does not have references of the kind that C++ or Java has, so v
>> >> cannot be a reference, in that sense, to b[k]; it must be a value copy.
>> >>
>> >> If what you really want is to be able to refer to the location of the
>> >> element in the slice (really its backing array), omit the v in the range
>> >> clause and just use &b[k]:
>> >>
>> >> for k := range b {
>> >>   _ = &b[k] // do what you want
>> >> }
>> >>
>> >> > _ = &v  //8 line
>> >> > _ = &b[k] //9 line
>> >> > // bb = append(bb, &v)
>> >> > bb = append(bb, &b[k])
>> >> > }
>> >> >
>> >> > // for _, v := range bb {
>> >> > // fmt.Println(*v)
>> >> > // }
>> >> > }
>> >>
>> >> ...Marvin
>> >>
>> > --
>> > 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 golan...@googlegroups.com.
>> > 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 golang-nuts+unsubscr...@googlegroups.com.
> 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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to