在golang語言中,乙個變數賦值/使用前,需要宣告變數的型別。例如:
var a int
a = 10
fmt.printf("%d\n", a)
使用另一種形式:=
也可以對變數進行隱式的宣告。例如:
a := 10
fmt.printf("%d\", a)
對於乙個變數,可以賦值多次,但是只能宣告一次,不能重複。例如:
a := 10
a := 100
b := 10
b := "10"
這些重複宣告都會報錯:
line 5: char 10: no new variables on left side of :=
但是如果有多個變數在:=
左側的話,那麼只要有乙個變數還沒有宣告,這個語法就是正確的,下面的例子特別常見:
a, err := foo()
b, err := bar()
還有一種情況是作用域不同也是可以重複宣告的。例如:
a := 1
fmt.printf("%d\n", a)
if ...
fmt.printf("%d\n", a)
這裡,應該輸出:
1
21
把上面幾種情況組合一下:
a := 1
fmt.printf("%d\n", a)
if ...
fmt.printf("%d\n", a)
這裡輸出的是:
1122
1312
這裡竟然a
是會被重新宣告!,因此可以看出:=
的意義,只要左側變數可以被宣告,那麼就盡量讓左側變數宣告。上面例子的寫法其實非常的容易寫錯,解決的辦法是提前宣告b
。 刷題中常用的方法總結
走路類數字和字串互轉 讀入類判斷資料區間 這裡我要在二維vector中查到符合條件的vector,有兩種方法 1.直接使用find函式,find返回迭代器,我們取得返回結果再與初始迭代器相減然後再判斷下就可以。vector int int ob vector int num 要查詢的vector 找...
刷題中發現曾經的小誤區
利用指標將陣列作為形參傳入 以下以int為例 void change int p,int len 以形式來對陣列中的值進行修改 void change1 int p,int len test case int p 10 for int i 0 i 10 i p i i 分別呼叫change和chan...
解決vscode無法提示golang的問題
q auto completions stopped working.what do i do?沒想到有人對這個感興趣,那就翻譯下 問題 自動補全功能停止工作。應該怎麼做?1.在終端中執行 gocode close,然後再試試。2.如果仍然有問題,執行go get u github.com mdem...