温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

golang语言渐入佳境[16]-结构体拷贝

发布时间:2020-06-12 00:43:31 阅读:740 作者:jonson_jackson 栏目:开发技术
GO开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

结构体拷贝

12345678910111213141516171819202122232425262728
type Dog struct {	name  string	color string	age   int8	kind  string}func main() {//1、struct是值类型,默认的复制就是深拷贝	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("------------------")//2、直接赋值指针地址	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("------------------")

结构体作为函数参数

123456789101112131415161718192021222324252627282930313233343536373839404142
package mainimport "fmt"type Flower struct {	name, color string}func main() {//1、结构体作为参数的用法	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){//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}

结构体作为函数返回值

12345678910111213141516171819202122232425262728293031323334353637383940
package mainimport "fmt"type Flower struct {	name, color string}func main() {//2、结构体作为返回值的用法//结构体对象作为返回值	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){//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协议 许可协议。转载请注明出处!

golang语言渐入佳境[16]-结构体拷贝

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×