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