go 開發中須要注意的與python的不一樣點

從python轉golang開發已經3個月了,由於寫過c++,因此對golang接受的還算快,這段經歷也不是很痛苦。伯樂在線上看了一些大神關於python轉golang過程當中的不適應和吐槽,決定寫下篇博客。接下來,我會列出golang開發過程當中與python的不一樣點,主要是在語法方面,golang的一些語法真是要人命啊。python

1.golang可讀性很強,與或對應&&, ||這也使得golang看起來更像傳統編程語言,而不是python的or,andc++

2.很難修改字符串,須要的話就重排吧golang

3.字符串常常須要在string和[]byte之間來回轉換,數字轉字符串必須用strconv編程

4.if,else,elif必須和配對的 { 在同一行json

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.聲明並賦值使用:=spa

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判斷是否出錯

就想到這麼多,但願對你們有所幫助~

相關文章
相關標籤/搜索