Golang中的參數(shù)傳遞示例詳解_第1頁
Golang中的參數(shù)傳遞示例詳解_第2頁
Golang中的參數(shù)傳遞示例詳解_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第Golang中的參數(shù)傳遞示例詳解前言

本文主要給大家介紹了關于Golang參數(shù)傳遞的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

關于參數(shù)傳遞,Golang文檔中有這么一句:

aftertheyareevaluated,theparametersofthecallarepassedbyvaluetothe

functionandthecalledfunctionbeginsexecution.

函數(shù)調用參數(shù)均為值傳遞,不是指針傳遞或引用傳遞。經測試引申出來,當參數(shù)變量為指針或隱式指針類型,參數(shù)傳遞方式也是傳值(指針本身的copy)

Slice是最常用的數(shù)據(jù)結構之一,下面以Slice為例,解釋Golang的參數(shù)傳遞機制。

Slice數(shù)據(jù)結構如下:

示例代碼:

packagemain

import"fmt"

funcmain(){

slice:=make([]int,3,5)

fmt.Println("before:",slice)

changeSliceMember(slice)

fmt.Println("after:",slice)

funcchangeSliceMember(slice[]int){

iflen(slice)1{

slice[0]=9

}

函數(shù)執(zhí)行結果為:

befor:[000]

after:[900]

解釋:

從數(shù)據(jù)結構圖中可看出,Slice可以理解成結構體類型,包含底層數(shù)組首元素地址、數(shù)組len、容量三個字段,slice對象在參數(shù)傳值過程中,把三個字段的值傳遞過去了,實際上changeSliceMember函數(shù)內slice在內存中的地址和main中的slice內存地址不一樣,只是字段值是一樣的,而第一個字段Pointer的值就是底層數(shù)組首元素地址,因此可以直接改變元素內容

可以與下面代碼做對比,理解:

packagemain

funcmain(){

value:=new(int)

modifyFunc(value)

println("main:",value)

funcmodifyFunc(value*int){

value=nil

println("modifyFunc:",value)

}

執(zhí)行結果:

modifyFunc:0x0

main:0xc820049f30

可以看出,即使傳值為指針,仍未改變變量value在main中的值,因為modifyFunc中value的值為指針,和main中的value值一樣,但是倆對象本身是兩個對象,讀者可以細細體會

總結

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論