vp is taking the address of v, so when the loop ends, v is the last element 
in the slide and therefore *vp is {0,0}
Add a break to the condition when you assign vp, say

if v.X == 3 {
 vp = &v
 break
}

HTH,
Yamil

El martes, 10 de septiembre de 2019, 14:13:40 (UTC-5), Tong Sun escribió:
>
> I'm experiencing a weird problem with my program and finally nail it down 
> to what exactly went wrong, so that I can write a minimum program to 
> duplicate it. See the following program:
>
> package main
>
>
> import (
>  "fmt"
> )
>
>
> type Vertex struct {
>  X int
>  Y int
> }
>
>
> func main() {
>  vs := []Vertex{
>  Vertex{1, 2}, // has type Vertex
>  Vertex{X: 3}, // Y:0 is implicit
>  Vertex{},     // X:0 and Y:0
>  }
>
>
>  fmt.Printf("Vertex Slice %+v\n", vs)
>  var vp *Vertex = nil
>  for _, v := range vs {
>  if v.X == 3 {
>  vp = &v
>  }
>  }
>  fmt.Printf("Found: %+v\n", vp)
> }
>
>
> https://play.golang.org/p/R645C5plojx
>
> I was expecting that the found Vertex is "v.X == 3", however the result is 
> not. 
>
> - what exactly is causing the problem?
> - how to fix it so that I got what I was looking for? 
>
> Again, the snip is at
> https://play.golang.org/p/R645C5plojx
>
> Thanks
>
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/14f9f238-c366-4cde-8228-ecc13added04%40googlegroups.com.

Reply via email to