-
形參和實(shí)參的區(qū)別
形參出現(xiàn)在函數(shù)定義中,在整個(gè)函數(shù)體內(nèi)都可以使用,?離開該函數(shù)則不能使用。
實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用。?
形參和實(shí)參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時(shí),?主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。
1.形參變量只有在被調(diào)用時(shí)才分配內(nèi)存單元,在調(diào)用結(jié)束時(shí),?即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。?函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。?
2.實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等,?無(wú)論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須具有確定的值,?以便把這些值傳送給形參。?因此應(yīng)預(yù)先用賦值,輸入等辦法使實(shí)參獲得確定值。?
3.實(shí)參和形參在數(shù)量上,類型上,順序上應(yīng)嚴(yán)格一致,?否則會(huì)發(fā)生“類型不匹配”的錯(cuò)誤。?
4.函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。?即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。?因此在函數(shù)調(diào)用過(guò)程中,形參的值發(fā)生改變,而實(shí)參中的值不會(huì)變化。
5.當(dāng)形參和實(shí)參不是指針類型時(shí),在該函數(shù)運(yùn)行時(shí),形參和實(shí)參是不同的變量,他們?cè)趦?nèi)存中位于不同的位置,形參將實(shí)參的內(nèi)容復(fù)制一份,在該函數(shù)運(yùn)行結(jié)束的時(shí)候形參被釋放,而實(shí)參內(nèi)容不會(huì)改變。
而如果函數(shù)的參數(shù)是指針類型變量,在調(diào)用該函數(shù)的過(guò)程中,傳給函數(shù)的是實(shí)參的地址,在函數(shù)體內(nèi)部使用的也是實(shí)參的地址,即使用的就是實(shí)參本身。所以在函數(shù)體內(nèi)部可以改變實(shí)參的值。
查看全部 -
注意,當(dāng)一個(gè)函數(shù)中存在多個(gè)
defer
語(yǔ)句時(shí),它們攜帶的表達(dá)式語(yǔ)句的執(zhí)行順序一定是它們的出現(xiàn)順序的倒序。查看全部 -
哎 這個(gè)老師喜歡用很復(fù)雜的話來(lái)說(shuō)一件很簡(jiǎn)單的事情?繞來(lái)繞去的很好玩嗎 ?這樣很費(fèi)腦筋啊 看一句話看半天
例如?“對(duì)照這張表格,我們就能夠解釋上面那條
for
語(yǔ)句打印出的內(nèi)容了,即:每次迭代出的第一個(gè)值所代表的是第二個(gè)字符值經(jīng)編碼后的第一個(gè)字節(jié)在該字符串經(jīng)編碼后的字節(jié)數(shù)組中的索引值。請(qǐng)大家真正理解這句話的含義?!?/strong>說(shuō)的就是字符經(jīng)過(guò)UTF-8編碼之后的索引?
該字符所占第一個(gè)字節(jié)的位置就是該字符的索引值啊?~~為什么要說(shuō)那么繞 要不是學(xué)過(guò)C我真看不懂。
查看全部 -
工作區(qū)和GOPATH目錄
查看全部 -
?攜帶
range
子句的for
語(yǔ)句還可以應(yīng)用于一個(gè)通道值之上。其作用是不斷地從該通道值中接收數(shù)據(jù),不過(guò)每次只會(huì)接收一個(gè)值。注意,如果通道值中沒(méi)有數(shù)據(jù),那么for
語(yǔ)句的執(zhí)行會(huì)處于阻塞狀態(tài)。無(wú)論怎樣,這樣的循環(huán)會(huì)一直進(jìn)行下去。直至該通道值被關(guān)閉,for
語(yǔ)句的執(zhí)行才會(huì)結(jié)束。和channel相關(guān)
查看全部 -
變量查看全部
-
recover調(diào)用一定要在發(fā)生異常(panic調(diào)用)之前
控制權(quán)交到調(diào)用包含recover語(yǔ)句的函數(shù)的函數(shù),包含recover的函數(shù)后面的代碼都不會(huì)執(zhí)行了
查看全部 -
default語(yǔ)句的執(zhí)行順序和它放的位置無(wú)關(guān)
fallthrough語(yǔ)句只能貫穿一條case語(yǔ)句,而不是所有
fallthrough語(yǔ)句放在最后一個(gè)case語(yǔ)句中會(huì)編譯出錯(cuò)
查看全部 -
Go語(yǔ)言定義指針的方式與C/C++不同,*需要放在類型之前,如:
var p *int ? ? ? ?// Golang,自動(dòng)初始化為nil
int* p = null; ? ?// C/C++查看全部 -
切片操作方括號(hào)中的第三個(gè)參數(shù)也是索引值,也就是說(shuō)容量最多可以到達(dá)底層數(shù)組(切片)的哪個(gè)位置,舉個(gè)例子:
number := [...]{1, 2, 3, 4, 5, 6, 7, 8, 9}
slice := number[ 1 : 3 :?5?]
上面切片方括號(hào)中的1,3,5表示的都是索引,即是說(shuō):slice切片的元素從number數(shù)組中索引為1的元素開始,到索引為(3-1=2)的元素結(jié)束,容量到索引為(5-1=4)的元素結(jié)束。
所以:
slice的長(zhǎng)度 = 3 - 1 = 2
slice的容量 = 5 - 1 = 4
查看全部 -
數(shù)組也可以被切片,返回的是切片
新切片的容量 = 原切片(數(shù)組)的容量 - 切片起始下標(biāo)
例:
var array = [5]int ?//cap(array) = 5
var slice = array[2?: 4]
那么:
cap(slice) = cap(array) - 2 = 5 -2 = 3
查看全部 -
//聲明數(shù)組的三種方式:
var array1 = [5]int
var array2 = [5]int {1, 2, 3}
var array3 = [...]int {1, 2, 3, 4, 5}
//注:方括號(hào)中必須寫明數(shù)組長(zhǎng)度或者...,否則定義的將是切片而不是數(shù)組
查看全部 -
//變量賦值的方式
num1 := 1
num2, num3 := 2, 3
var num4 = 4
var num5 int = 5
var num6, num7 = 6, 7
var num8, num9 int = 8, 9
var (
????num10 = 10
????num11 = 11
)
var (
????num12 int = 12
????num13 int = 13
)
//注:const和var的用法完全一樣
查看全部 -
其實(shí)標(biāo)識(shí)符可以是下劃線開頭的,但數(shù)字是真的不可以。
查看全部 -
<img src="https://img1.sycdn.imooc.com//5abf67490001a13a05000398.jpg" title="" alt="https://img1.sycdn.imooc.com//5abf67490001a13a11620924.jpg" />查看全部
舉報(bào)