從python轉golang開發已經3個月了,因為寫過c++,所以對golang接受的還算快,這段經歷也不是很痛苦。伯樂線上上看了一些大神關於python轉golang過程中的不適應和吐槽,決定寫下篇博客。接下來,我會列出golang開發過程中與python的不同點,主要是在語法方面,golang的 ...
從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判斷是否出錯
就想到這麼多,希望對大家有所幫助~