结构体拷贝1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| type Dog struct { name string color string age int8 kind string }
func main() {
d1 := Dog{"豆豆", "黑色", 2, "二哈"} fmt.Printf("d1: %T , %v , %p \n", d1, d1, &d1) d2 := d1 fmt.Printf("d2: %T , %v , %p \n", d2, d2, &d2)
d2.name = "毛毛" fmt.Println("d2修改后:", d2) fmt.Println("d1:", d1) fmt.Println("------------------")
d3 := &d1 fmt.Printf("d3: %T , %v , %p \n", d3, d3, d3) d3.name = "球球" d3.color = "白色" d3.kind = "萨摩耶" fmt.Println("d3修改后:", d3) fmt.Println("d1:", d1) fmt.Println("------------------")
|
结构体作为函数参数1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| package main
import "fmt"
type Flower struct { name, color string }
func main() {
f1 := Flower{"玫瑰", "红"} fmt.Printf("f1: %T , %v , %p \n" , f1 , f1 , &f1) fmt.Println("----------------------")
changeInfo1(f1) fmt.Printf("f1: %T , %v , %p \n" , f1 , f1 , &f1) fmt.Println("----------------------")
changeInfo2(&f1) fmt.Printf("f1: %T , %v , %p \n" , f1 , f1 , &f1) fmt.Println("----------------------")
}
func getFlower1() (f Flower){ f = Flower{"牡丹", "白"} fmt.Printf("函数getFlower1内f: %T , %v , %p \n" , f , f , &f) return }
func getFlower2() (f *Flower){
temp := Flower{"芙蓉", "红"} fmt.Printf("函数getFlower2内temp: %T , %v , %p \n" , temp , temp , &temp) f = &temp fmt.Printf("函数getFlower2内f: %T , %v , %p , %p \n" , f , f , f , &f) return }
|
结构体作为函数返回值1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| package main import "fmt"
type Flower struct { name, color string }
func main() {
f2 := getFlower1() f3 := getFlower1() fmt.Println("更改前" , f2 , f3) f2.name = "杏花" fmt.Println("更改后" , f2 , f3)
f4 := getFlower2() f5 := getFlower2() fmt.Println("更改前" , f4 , f5) f4.name = "桃花" fmt.Println("更改后" , f4 , f5) }
func getFlower1() (f Flower){ f = Flower{"牡丹", "白"} fmt.Printf("函数getFlower1内f: %T , %v , %p \n" , f , f , &f) return }
func getFlower2() (f *Flower){
temp := Flower{"芙蓉", "红"} fmt.Printf("函数getFlower2内temp: %T , %v , %p \n" , temp , temp , &temp) f = &temp fmt.Printf("函数getFlower2内f: %T , %v , %p , %p \n" , f , f , f , &f) return }
|
本文链接: https://dreamerjonson.com/2018/11/26/golang-16-struct-copy/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY 4.0 CN协议 许可协议。转载请注明出处!

|