從python轉golang開發已經3個月了,因為寫過c++,所以對golang接受的還算快,這段經歷也不是很痛苦。伯樂在線上看了一些大神關於python轉golang過程中的不適應和吐槽,決定寫下篇博客。接下來,我會列出golang開發過程中與python的不同點,主要是在語法方面,golang的一些語法真是要人命啊。
1.golang可讀性很強,與或對應&&, ||這也使得golang看起來更像傳統編程語言,而不是python的or,and
2.很難修改字符串,需要的話就重排吧
3.字符串經常需要在string和[]byte之間來回轉換,數字轉字符串必須用strconv
4.if,else,elif必須和配對的 { 在同一行
5.無時無刻不在使用自定義的struct,初始化結構體要用,json轉成數據結構也要用,如果json轉成的是復合結構還要嵌套struct,很多時候strcut來當python中的map用
6.定義type test struct,想得到一個test的數組,要使用[]*test,而不是[]test
7.struct及其里面的元素的首字母要大寫,不然很可能訪問不到
8.golang的map比python難用多了,沒有dict.keys(),沒有dict.values(),想把map轉成別的結構只能遍歷map
9.聲明並賦值使用:=
10.沒有set,沒有tuples,要經常使用slices
11.沒有__getattr,要經常檢查是否存在
12.引用的包,聲明的變量必須都的使用,不然編譯都無法通過
13.數組沒有[:-1]、[::-1]、a,b,c=[1,2,3]這些靈活的用法
14.如果能確定函數返回的類型,就不要用interface{},哪怕結構很復雜,也要使用strcut來返回。如果返回interface{},那么string(),for遍歷這些基礎用法都沒法使用了
15.空指針是nil,python中的None在golang用nil代替,經常寫err != nil判斷是否出錯
就想到這么多,希望對大家有所幫助~