Go语言-结构体学习笔记
程序一:
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
a := person{
Name :"joe",
Age: 19,
}
fmt.Println(a)
A(a)
fmt.Println(a)
}
func A(per person) {
per.Age = 13
fmt.Println("A",per)
}
输出:
{joe 19}
A {joe 13}
{joe 19}
程序二:
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
a := person{
Name :"joe",
Age: 19,
}
fmt.Println(a)
A(&a)
fmt.Println(a)
}
func A(per *person) {
per.Age = 13
fmt.Println("A",per)
}
改用指针后,成功改变了结构体的值
输出:
{joe 19}
A &{joe 13}
{joe 13}
程序三:
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
a := &person{
Name :"joe",
Age: 19,
}
fmt.Println(a)
A(a)
B(a)
fmt.Println(a)
}
func A(per *person) {
per.Age = 13
fmt.Println("A",per)
}
func B(per *person) {
per.Age = 15
fmt.Println("B",per)
}
输出:
&{joe 19}
A &{joe 13}
B &{joe 15}
&{joe 15}
我们看到,a为指针变量后,传参数时,就不用每次都写上&a了
程序四:
package main
import (
"fmt"
)
type person struct {
Name string
Age int
}
func main() {
a := &person{
Name :"joe",
Age: 19,
}
a.Name = "ok"
fmt.Println(a)
A(a)
B(a)
fmt.Println(a)
}
func A(per *person) {
per.Age = 13
fmt.Println("A",per)
}
func B(per *person) {
per.Age = 15
fmt.Println("B",per)
}
输出:
&{ok 19}
A &{ok 13}
B &{ok 15}
&{ok 15}
程序五:
匿名结构休定义
package main
import (
"fmt"
)
func main() {
a := struct {
Name string
Age int
}{
Name:"joe",
Age: 19,
}
fmt.Println(a)
}
输出
{joe 19}