刷題中碰見的Golang語言問題

2022-09-12 17:36:22 字數 1081 閱讀 4439

在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...