Skip to content

Instantly share code, notes, and snippets.

@krittawatcode
Last active December 11, 2020 06:55
Show Gist options
  • Save krittawatcode/eef85fdf54cf72f0352e1e0b88433196 to your computer and use it in GitHub Desktop.
Save krittawatcode/eef85fdf54cf72f0352e1e0b88433196 to your computer and use it in GitHub Desktop.
package main
import "fmt"
type Soldier struct {
name string
corrupt bool
}
func buggyLoop(soldiers []Soldier) {
soldierPtrs := []*Soldier{}
for _, soldier := range soldiers {
fmt.Printf("Soldier with name: <%s> and pointer: <%p>\n", soldier.name, &soldier)
soldierPtrs = append(soldierPtrs, &soldier)
}
// range in array of pointer -> value here is a pointer
for _, solsoldierPtr := range soldierPtrs {
fmt.Printf("soldier <%s> with corruption: <%v> and pointer: <%p>\n", solsoldierPtr.name, solsoldierPtr.corrupt, solsoldierPtr)
}
}
func main() {
soldiers := []Soldier{
{
name: "Too",
corrupt: true,
},
{
name: "Pawit",
corrupt: true,
},
{
name: "Tone",
corrupt: false,
},
}
fmt.Println("----- buggyLoop ------")
buggyLoop(soldiers)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment