pointers/

directory
v0.0.0-...-a855ea4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2016 License: Apache-2.0

README

Pointers

Pointers provide a way to share data across function boundaries. Having the ability to share and reference data with a pointer provides flexbility. It also helps our programs minimize the amount of memory they need and can add some extra performance.

Notes

  • Use pointers to share data.
  • Values in Go are always pass by value.
  • "Value of", what's in the box. "Address of" ( & ), where is the box.
  • The (*) operator declares a pointer variable and the "Value that the pointer points to".

1.5 Garbage Collection

figure1

Pointer Mechanics

https://golang.org/doc/effective_go.html#pointers_vs_values

http://www.goinggo.net/2013/07/understanding-pointers-and-memory.html

http://www.goinggo.net/2014/12/using-pointers-in-go.html

Stacks

Contiguous Stack Proposal

Escape Analysis and Inlining

Go Escape Analysis Flaws

https://github.com/golang/go/wiki/CompilerOptimizations

Garbage Collection

https://en.wikipedia.org/wiki/Tracing_garbage_collection

https://blog.golang.org/go15gc

Rick Hudson GC Talk

Single Static Assignment Optimizations

GopherCon 2015: Ben Johnson - Static Code Analysis Using SSA

https://github.com/golang/go/blob/dev.ssa/src/cmd/compile/internal/ssa/compile.go#L83

https://godoc.org/golang.org/x/tools/go/ssa

Code Review

Pass by Value (Go Playground)

Sharing data I (Go Playground)

Sharing data II (Go Playground)

Stack vs Heap (Go Playground)

Exercises

Exercise 1

Part A Declare and initialize a variable of type int with the value of 20. Display the address of and value of the variable.

Part B Declare and initialize a pointer variable of type int that points to the last variable you just created. Display the address of , value of and the value that the pointer points to.

Template (Go Playground) | Answer (Go Playground)

Exercise 2

Declare a struct type and create a value of this type. Declare a function that can change the value of some field in this struct type. Display the value before and after the call to your function.

Template (Go Playground) | Answer (Go Playground)


All material is licensed under the Apache License Version 2.0, January 2004.

Directories

Path Synopsis
Sample program to show the basic concept of pass by value.
Sample program to show the basic concept of pass by value.
Sample program to show the basic concept of using a pointer to share data.
Sample program to show the basic concept of using a pointer to share data.
Sample program to show the basic concept of using a pointer to share data.
Sample program to show the basic concept of using a pointer to share data.
Sample program to show variables stay on or escape from the stack.
Sample program to show variables stay on or escape from the stack.
exercises
exercise1
Declare and initialize a variable of type int with the value of 20.
Declare and initialize a variable of type int with the value of 20.
exercise2
Declare a struct type and create a value of this type.
Declare a struct type and create a value of this type.
template1
Declare and initialize a variable of type int with the value of 20.
Declare and initialize a variable of type int with the value of 20.
template2
Declare a struct type and create a value of this type.
Declare a struct type and create a value of this type.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL