go 開發中需要註意的與python的不同點

来源:https://www.cnblogs.com/baiyb/archive/2018/07/29/9388180.html
-Advertisement-
Play Games

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

就想到這麼多,希望對大家有所幫助~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 傳統的佈局方案,在針對特殊佈局時會很不方便,比如垂直居中,把一個容器等分為N列等等。自從 Flex 出現以後,這些都迎刃而解了,本文對Flex相關內容做一個簡單梳理。 ...
  • 使用前端技術開發桌面應用的技術已經相當成熟了,像早先的 NW.js,如今很火的 Electron 等,都可以輕鬆實現。今天給大家分享的 nativefier 就是基於 Electron 封裝的,可以幫助你只需要一行命令就可以生成不同平臺的桌面應用程式,非常神奇! ...
  • 原型與原型鏈 一. 普通對象與函數對象 JavaScript 中,萬物皆對象!但對象也是有區別的。分為普通對象和函數對象,Object 、Function 是 JS 自帶的函數對象。下麵舉例說明 在上面的例子中 o1 o2 o3 為普通對象,f1 f2 f3 為函數對象。怎麼區分,其實很簡單,凡是通 ...
  • 前一段時間自家養的幾隻貓經常出問題,由於沒有有效的監控預警手段,以至於問題出現或者許久一段時間才會被通知到。凌晨一點這個鍋可誰都不想背,為此基於目前的情況搭建了以下這麼一套監控預警系統。 ...
  • 運算符與分支結構 運算符 賦值運算符 用'='表示,左邊只能是變數。 算術運算符 +、-、*:加、減、乘 /:除法運算,結果是浮點數 //:除法運算,結果是整數 %:求餘 **:求冪 複合運算符 +=、-=、*=、/=、//=、%=、**= 示例:a += b等價於a = a + b 關係運算符 > ...
  • 女孩:談Java了,好耶? 男孩:夜談一下,Java的類的定義~ 女孩:那談Java的類的什麼呢? 男孩:類的定義,對象的定義,類中的方法,構造方法,this關鍵字,方法的重載,Java中的類的訪問許可權,set和get方法,static關鍵字~ 面向對象設計思想 設計思想的變化 例如:學生行為 對於 ...
  • 1. 學習計劃 1、Activemq整合spring的應用場景 2、添加商品同步索引庫 3、商品詳情頁面動態展示 4、展示詳情頁面使用緩存 2. Activemq整合spring 2.1. 使用方法 第一步:引用相關的jar包。 第二步:配置Activemq整合spring。配置Connection ...
  • 搭建環境 1. 安裝Java SDK及添加環境變數 2. 安裝Elipse Java及CDT插件 3. 安裝tdm64 gcc及添加環境變數 "百度雲" (密碼:mjdi) 3. 安裝msys及添加環境變數 "百度雲" (密碼:j2i6) JNI使用步驟 創建java工程jni_demo 創建類 J ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...