github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2015/go-for-java-programmers/pointer.go (about)

     1  // +build OMIT
     2  
     3  package main
     4  
     5  import "fmt"
     6  
     7  // START TYPES OMIT
     8  type Point struct {
     9  	X, Y int
    10  }
    11  
    12  type Rectangle struct {
    13  	Min, Max Point
    14  }
    15  
    16  // END TYPES OMIT
    17  
    18  func main() {
    19  	var r0 Rectangle
    20  
    21  	r1 := r0 // struct copy
    22  
    23  	r1.Min.X, r1.Min.Y = -1, -1
    24  	r1.Max = Point{X: 2}
    25  
    26  	fmt.Printf("r0 is %+v\n", r0)
    27  	fmt.Printf("r1 is %v\n", r1)
    28  
    29  	y := &r1.Max.Y // y is a *int // HL
    30  	*y = 5         // HL
    31  	fmt.Println(y, "points to", *y)
    32  
    33  	min := &r1.Min // min is a *Point // HL
    34  	min.X = 7      // HL
    35  	fmt.Printf("r1 is %v\n", r1)
    36  }