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