今天遇到一個問題,在函數外定義了一個變量,然後在函數中給其賦值,結果怎麼都是爲空,糾結了好久,原來是一個很低級的傳值和傳值錯誤,總算得以解決,這裏用一個例子說明。
golang中在傳遞一個參數到函數的過程中其實是傳遞了一份copy,而原值不變,如果要改變原值,則必須傳址。
var a int
func add1(a int) int{
a=a+1
return a
}
func add2(a *int)int{
a=a+1
return a
}
func main(){
x:=3
fmt.Println(add1(a)) //輸出4
fmt.Println(a) //輸出3
fmt.Println(add2(a)) //輸出4
fmt.Println(a) //輸出4
}
傳值和傳址
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Golang爬蟲代理接入的技術與實踐
原創
2024-04-26 23:26:42
golang 表格
go get github.com/xuri/excelize/v2 package main import ( "fmt" "github.com/xuri/excelize/v2"
原創
2024-04-24 12:41:26
標準庫unsafe:帶你突破golang中的類型限制
原創
2024-03-29 10:55:53
go-Channel
原創
2024-03-24 00:10:06
logrus在windows的terminal下彩色顯示
学_徒
2020-07-08 11:40:54
判斷Golang中接口是否實現
学_徒
2020-07-08 11:40:54
golang image: unknown format 錯誤解決
无风的雨
2020-07-08 10:53:39
Golang panic 捕獲異常打印堆棧信息
kinshy
2020-07-08 08:58:33
golang pbkdf2加密存儲用戶密碼
藏呆羊
2020-07-08 07:44:51
Golang發送HTTP請求
藏呆羊
2020-07-08 07:44:49
衆享免單(商城)系統開發
wjt1233210
2020-07-08 05:36:48
使用go-ethereum操作簡單智能合約
高小小的家长
2020-07-08 05:35:28
在私鏈上使用go-ethereum發佈ERC20代幣合約
高小小的家长
2020-07-08 05:35:28
用Golang開發一個增改查的Dapp記事本
高小小的家长
2020-07-08 05:35:28