Golang 踩坑(無法分類情況

2021-10-11 14:39:03 字數 2056 閱讀 1080

1.for迴圈使用多個變數

for expression1; expression2; expression3 

// 錯誤寫法: ++ --是語句而不是表示式

//不能使用i++,j-- ,正解為:i = i + 1, j = j + 1

func

main()

fmt.

println

("sum is equal to "

, sum)

}// 正確寫法

func

main()

fmt.

println

("sum is equal to "

, sum)

}

2.leetcode:297

func

main()

change

(slice,0)

fmt.

println

("slice = "

,slice)

}func

change

(s [

]string

,i int)}

列印:[23

4][3

4][2

34]slice =[1

234]

證明:當無法遞迴下去返回時,會回到上次的s

故:func

main()

change

(&slice,0)

fmt.

println

("slice = "

,slice)

}func

change

(s *

string

,i int

)}

3.go中不支援指標運算

在go中 ++ 和 – 只能作為語句而非表示式

a :=

1a ++

// 注意:不能寫成 ++ a 或 -- a 必須放在右邊使用

// b := a++ // 此處為錯誤的用法,不能寫在一行,要單獨作為語句使用

fmt.

println

(a)// 2

q:leetcode 4

5/2.0 = 2.5

5.運算

&: 按位運算

&&: 兩都為真則為真

leetcode 131

for j :=

0; j < n; j++

}}

6.golong中,沒有long型別,long型別=int64

7.注意溢位:

乘法溢位 int32int32最大情況下=int64 1111

加法溢位 int32+int32最大可能溢位一位 11+11 = 100

-2^32 ~ + 2^32-1 除法溢位 leetcode29:

8.注意,golaog無法給某個賦值為nil

wrong

p :=

nil此時p不為nil,p.value =

0p:=

&listnode

right

var p *lisnode =

nil

9.golong中,使用2^4,此時的 ^ 不再是次方的含義,而是按位異或

求次方,用 math.pow(a float64, b float64) float64。注意引數和返回值均是float64型別,根據題目需要可能需轉換int

golong中,

3/2=1

float64(3/2)=1

3/2.0=1.5

a := 3

a/2.0=1 先對a做型別斷言,是int,接著會將變數2.0強制轉換成int

11.踩了800次

結構體初始化加逗號!!!逗號!!

func

initdlinkednode

(key, value int

)*listnode

}

Golang學習踩坑

學習一門新語言,難免少不了踩坑,很多坑都是因為上個語言遺留下來的習慣,在這裡記錄一下 jetbrains goland 編寫go語言的時候,不能直接寫import,一般寫main 的時候會自動匯入 go語言申明的變數必須使用,不然會編譯報錯 go語言一行一句,不支援分行,不需要 如果你想把多行語句並...

Golang開發踩過的坑

如何判斷某type型別實現了某介面 作為golang開發的小白,日常開發時候總會遇到一些問題,本篇部落格的會收錄一些日常開發時踩過的坑,可能有解決了的,也許也會有沒解決的。在使用for range進行遍歷切片或陣列時,遍歷時的指標index,value只是乙個臨時且位址不變的記憶體位址 packag...

Golang之json踩坑之旅

最近公司有個專案,需要用golang寫乙個命令列工具。去呼叫業務系統的grpc介面,需要對引數進行封裝並解析。呼叫的請求引數結構體需要經過json解析成byte type inferencerequest struct sendtoremotefeaturedata map string inte ...