S SmartDocs
Serie: Go go 41 righe · Aggiornato 2026-04-18

main.go

Go/part1-language/examples/08_pointers/main.go

// Demonstrates pointers, nil safety, value vs pointer semantics.
package main

import "fmt"

type Big struct {
	Data [1 << 10]byte
	Tag  string
}

func setTagByValue(b Big, t string)    { b.Tag = t }
func setTagByPointer(b *Big, t string) { b.Tag = t }

func newCounter() *int {
	n := 0
	return &n
}

func main() {
	x := 10
	p := &x
	*p = 99
	fmt.Println("x =", x)

	var np *int
	fmt.Println("nil ptr:", np == nil)

	b := Big{Tag: "init"}
	setTagByValue(b, "by value")
	fmt.Println("after by value:", b.Tag)
	setTagByPointer(&b, "by pointer")
	fmt.Println("after by pointer:", b.Tag)

	c := newCounter()
	*c++
	*c++
	fmt.Println("counter:", *c)

	pi := new(int)
	fmt.Println("new int:", *pi)
}

Articoli correlati