Skip to content

Instantly share code, notes, and snippets.

@Diegosny
Created June 8, 2022 01:32
Show Gist options
  • Save Diegosny/551f72010d082a74f3e005133e0cf151 to your computer and use it in GitHub Desktop.
Save Diegosny/551f72010d082a74f3e005133e0cf151 to your computer and use it in GitHub Desktop.
package main
import "fmt"
type Person struct {
name string
age int
}
//Passagem por valor
func (p Person) setPerson() {
p.name = "John"
p.age = 20
fmt.Println("Nome por valor", p.name)
fmt.Println("Idade por valor", p.age)
fmt.Println("**********************")
//Estes valores estão presos neste escopo, pois p é uma cópia de struct
}
//Passagem por referencia
func (p *Person) setPersonTwo() {
p.name = "Breno"
p.age = 33
fmt.Println("Nome por referencia", p.name)
fmt.Println("Idade por referencia", p.age)
fmt.Println("**********************")
//Note que aqui, como a chamada da função é antes, então ela irá alterar toda struct
//Ou seja aqui irá alterar o valor da struct
}
func main() {
p1 := Person{
name: "Ana",
age: 21,
}
p1.setPersonTwo()
p1.setPerson()
fmt.Println("Nome func main", p1.name)
fmt.Println("Idade func main", p1.age)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment