mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 06:19:44 +08:00
41 lines
1019 B
Go
41 lines
1019 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type Person struct {
|
|
firstName string
|
|
lastName string
|
|
}
|
|
|
|
func upPerson (p *Person) {
|
|
p.firstName = strings.ToUpper(p.firstName)
|
|
p.lastName = strings.ToUpper(p.lastName)
|
|
}
|
|
|
|
func main() {
|
|
// 1- struct as a value type:
|
|
var pers1 Person
|
|
pers1.firstName = "Chris"
|
|
pers1.lastName = "Woodward"
|
|
upPerson(&pers1)
|
|
fmt.Printf("The name of the person is %s %s\n", pers1.firstName, pers1.lastName)
|
|
// 2 - struct as a pointer:
|
|
pers2 := new(Person)
|
|
pers2.firstName = "Chris"
|
|
pers2.lastName = "Woodward"
|
|
(*pers2).lastName = "Woodward"
|
|
upPerson(pers2)
|
|
fmt.Printf("The name of the person is %s %s\n", pers2.firstName, pers2.lastName)
|
|
// 3 - struct as a literal:
|
|
pers3 := &Person{"Chris","Woodward"}
|
|
upPerson(pers3)
|
|
fmt.Printf("The name of the person is %s %s\n", pers3.firstName, pers3.lastName)
|
|
}
|
|
/* Output:
|
|
The name of the person is CHRIS WOODWARD
|
|
The name of the person is CHRIS WOODWARD
|
|
The name of the person is CHRIS WOODWARD
|
|
*/ |