成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇學(xué)會深拷貝和淺拷貝

開發(fā) 前端
對于引用類型來說,你的每一次拷貝,Go 不會申請新的內(nèi)存空間,而是使用它的指針,兩個變量名其實都指向同一塊內(nèi)存空間,改變其中一個變量,會直接影響另一個變量。

[[426006]]

1. 什么是拷貝?

當(dāng)你把 a 變量賦值給 b 變量時,其實就是把 a 變量拷貝給 b 變量

  1. a := "hello" 
  2.  
  3. b := a 

這只是拷貝最簡單的一種形式,而有些形式卻表現(xiàn)得非常的隱蔽。比如:

  • 你往一個函數(shù)中傳參
  • 你向通道中傳入對象

這些其實在 Go編譯器中都會進(jìn)行拷貝的動作。

2. 什么是深淺拷貝?

知道了什么是拷貝,那我們再往深點開挖,聊聊深淺拷貝。

不過先別急,咱先了解下數(shù)據(jù)結(jié)構(gòu)的兩種類型:

值類型 :String,Array,Int,Struct,F(xiàn)loat,Bool

引用類型:Slice,Map

這兩種不同的類型在拷貝的時候,在拷貝的時候效果是完全不一樣的,這對于很多新手可能是一個坑。

對于值類型來說,你的每一次拷貝,Go 都會新申請一塊內(nèi)存空間,來存儲它的值,改變其中一個變量,并不會影響另一個變量。

  1. func main() { 
  2.     aArr := [3]int{0,1,2} 
  3.     fmt.Printf("打印 aArr: %v \n", aArr) 
  4.     bArr := aArr 
  5.     aArr[0] = 88 
  6.     fmt.Println("將 aArr 拷貝給 bArr 后,并修改 aArr[0] = 88"
  7.     fmt.Printf("打印 aArr: %v \n", aArr) 
  8.     fmt.Printf("打印 bArr: %v \n", bArr) 

從輸出結(jié)果來看,aArr 和 bArr 相互獨立,互不干擾

  1. 打印 aArr: [0 1 2]  
  2. 將 aArr 拷貝給 bArr 后,并修改 aArr[0] = 88 
  3. 打印 aArr: [88 1 2]  
  4. 打印 bArr: [0 1 2]  

對于引用類型來說,你的每一次拷貝,Go 不會申請新的內(nèi)存空間,而是使用它的指針,兩個變量名其實都指向同一塊內(nèi)存空間,改變其中一個變量,會直接影響另一個變量。

  1. func main() { 
  2.     aslice := []int{0,1,2} 
  3.     fmt.Printf("打印 aslice: %v \n", aslice) 
  4.     bslice := aslice 
  5.     aslice[0] = 88 
  6.     fmt.Println("將 aslice 拷貝給 bslice 后,并修改 aslice[0] = 88"
  7.     fmt.Printf("打印 aslice: %v \n", aslice) 
  8.     fmt.Printf("打印 bslice: %v \n", bslice) 

從輸出結(jié)果來看,aslice 的更新直接反映到了 bslice 的值。

  1. 打印 aslice: [0 1 2]  
  2. 將 aslice 拷貝給 bslice 后,并修改 aslice[0] = 88 
  3. 打印 aslice: [88 1 2]  
  4. 打印 bslice: [88 1 2]  

是不是很簡單?跟著明哥一起來攻克 Go 的各個邊邊角角的知識吧

加油噢,我們下篇見

本文轉(zhuǎn)載自微信公眾號「Go編程時光」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系Go編程時光公眾號。

 

責(zé)任編輯:武曉燕 來源: Go編程時光
相關(guān)推薦

2021-07-16 12:33:24

Javascript深拷貝淺拷貝

2017-08-16 13:30:05

Java深拷貝淺拷貝

2022-07-26 08:07:03

Python淺拷貝深拷貝

2020-08-03 08:24:26

原型模式拷貝

2018-09-26 14:37:17

JavaScript前端編程語言

2021-01-08 06:15:09

深拷貝淺拷貝寫時拷貝

2020-06-23 08:41:47

JavaScript開發(fā)技術(shù)

2023-05-17 08:42:46

深拷貝Golang

2023-09-22 12:21:33

Python深拷貝淺拷貝

2019-02-25 08:58:16

Python深拷貝淺拷貝

2020-10-12 08:35:22

JavaScript

2024-03-15 15:03:23

2009-05-19 17:28:44

深拷貝淺拷貝clone()

2023-01-05 18:14:32

淺拷貝深拷貝Python

2018-05-10 14:20:18

前端JavaScript深拷貝

2023-05-17 07:36:00

淺拷貝深拷貝對象

2022-09-30 15:03:09

C語言深拷貝淺拷貝

2024-02-05 22:56:16

C++拷貝開發(fā)

2021-09-10 07:41:06

Python拷貝Python基礎(chǔ)

2024-04-17 09:01:08

Python深拷貝淺拷貝
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日本粉嫩一区二区三区视频 | 日韩三级免费观看 | 韩国av电影网 | 一道本在线 | av播播 | 国产欧美精品一区二区 | 韩日一区二区 | 久久久爽爽爽美女图片 | 亚洲一二三区av | 一区二区三区在线电影 | 古装三级在线播放 | 自拍视频网站 | 黄色在线免费看 | 国产精品福利久久久 | 久久久性色精品国产免费观看 | 国产成人在线播放 | 久久久久国产一区二区三区 | 精品国产一区一区二区三亚瑟 | 自拍第1页 | 久久精品欧美一区二区三区不卡 | 久久久久午夜 | 一区视频 | 精品一区二区三区91 | 日韩一二三区视频 | 亚洲二区视频 | 成人在线免费视频 | 免费看av大片 | 亚洲欧美精品久久 | 欧美一级片在线观看 | 精品国偷自产在线 | 狠狠干av | 亚洲一区成人 | 久久合久久 | 精品视频国产 | av永久免费 | 五月激情综合网 | 91综合在线观看 | 亚洲精品永久免费 | www在线| 国产一区在线免费观看视频 | 欧美区在线 |