43 lines
732 B
Go
43 lines
732 B
Go
package main
|
|
|
|
import "fmt"
|
|
|
|
type person struct {
|
|
name string
|
|
age int
|
|
}
|
|
|
|
func newPerson(name string) *person {
|
|
p := person{name: name}
|
|
p.age = 42
|
|
return &p
|
|
}
|
|
|
|
func main() {
|
|
fmt.Println(person{"Bob", 20})
|
|
fmt.Println(person{"Alice", 30})
|
|
// fmt.Println(person{"Fred"}) // will zero value age. Compiler don't like it actually.
|
|
fmt.Println(&person{"Ann", 40})
|
|
fmt.Println(newPerson("Jon"))
|
|
|
|
s := person{name: "Sean", age: 50}
|
|
|
|
fmt.Println(s.name)
|
|
|
|
sp := &s
|
|
fmt.Println(sp.age)
|
|
|
|
sp.age = 51
|
|
fmt.Println(sp.age)
|
|
|
|
// If a single use struct you can omit the decalre the struct type and just use it directly on the initialization.
|
|
dog := struct {
|
|
name string
|
|
isGood bool
|
|
}{
|
|
"Mike",
|
|
true,
|
|
}
|
|
fmt.Println(dog)
|
|
}
|