高手問答第 302 期 —— 如何快速編寫出高質量的 Go 應用程序?

小白兔愛吃大灰狼 發布于 06/13 15:11
閱讀 8K+
收藏 6

從數據到大模型應用,11 月 25 日,杭州源創會,共享開發小技巧

Go語言(Golang)是一種由Google開發的靜態類型編程語言,旨在提供高效的并發編程能力和簡潔的語法。同時Go語言是云原生軟件棧的主要編程語言之一,在服務器端、云計算、物聯網、人工智能等領域都有著廣泛的應用,其重要性不言而喻。隨著Go語言越來越受歡迎,越來越多的開發者開始學習和使用Go語言。與Go相關的語法并不難學,但很少有人能通過語法快速掌握Go語言的內部運作機制,以及背后的實現原理。

希望通過本期活動,讓大家學會如何快速編寫出高質量的Go應用程序。

OSCHINA 本期高手問答 (6 14 - 6 20) 我們請來了@戀戀美食(任洪彩)和大家一起探討關于Go語言、源碼相關的問題。

可討論的問題包括但不限于:

1.Go語言中,如何處理并發編程中的競態條件和死鎖問題?

2.Go語言的標準庫提供了很多實用的包,比如net、fmt、math等,你是如何利用這些包進行開發和實踐的?

3.相較于其他靜態類型編程語言,Go語言在編寫代碼時有哪些優勢和不足?如何揚長避短?

4.Go語言對于新手友好,但在實踐中可能會遇到一些比較難理解的概念,比如指針、goroutine、channel等,你是如何克服這些難點的?

5.隨著Go語言的發展,未來的應用場景會更加廣泛,你認為Go語言在哪些領域會有更大的發展前景?

或者其他與Go、并發編程、源碼相關的問題,也歡迎大家積極提問!

嘉賓簡介

任洪彩

華為云原生開源團隊成員,CNCF(云原生計算基金會)官方大使,Kubernetes、Karmada等項目的資深維護者。

華為員工培訓中心講師,負責Go語言培訓及軟件工程能力建設。

Nokia、華為等公司參與過多個大型項目的研發與重構,對Go、C/C++、Python、Swift等語言均有深入的研究與實踐。


為了鼓勵踴躍提問,@博文視點 會在問答結束后從提問者中抽取 5 名幸運會員贈予《Go專家編程》(第2版)一書。

京東購買鏈接:

https://item.jd.com/13710415.html

OSChina 高手問答一貫的風格,不歡迎任何與主題無關的討論和噴子。

下面歡迎大家就Go、并發編程相關相關問題向 @戀戀美食 提問,請直接回帖提問。

加載中
0
小白兔愛吃大灰狼
小白兔愛吃大灰狼

高手問答第 302 期 —— 如何快速編寫出高質量的 Go 應用程序?

@clearsky1991 @taadis   @Doeeking @毒策士  @南方Go 

恭喜以上5位網友分別獲得《Go 專家編程》(第 2 版)書籍一本。

請于6月29日前登陸賬號, 私信  @小白兔愛吃大灰狼   告知快遞信息(格式:姓名+電話+地址),過期視為自動放棄哦~

南方Go
南方Go
收到
0
clearsky1991
clearsky1991

@戀戀美食 你好,對于go小白,想問你這幾個問題:

  1. 在高并發的應用場景下,如何通過使用 sync 包中的鎖來保證數據同步性,并提高程序的性能和響應速度?
  2. 在 web 開發中,Go 語言常用的 web 框架有哪些?它們的特點和適用場景是什么?
  3. 在使用 Go 進行網絡編程時,如何處理常見的網絡異常情況,如連接超時、連接中斷等?有哪些常用的網絡調試和優化工具在 Go 中可用?
戀戀美食
戀戀美食
幾個方法論的建議: 1. 減小鎖的粒度,用完即時釋放 2. 讀多寫少場景,考慮使用讀寫鎖 另外可以嘗試下不用鎖,原子操作。
-1
alien_hjy
alien_hjy
不寫錯誤處理就好了(誤)
-1
光石頭
光石頭

@戀戀美食 go支持wasm比較弱,有推薦go的wasm開發框架嗎?

-1
dwingo
dwingo

@戀戀美食 Go語言現在已經比較穩定了, 未來還可能會加入重要的新特性嗎? 有計劃推出Go 2.0嗎?

戀戀美食
戀戀美食
很難再有像泛型同等粒度的更新了,沒了解到Go 2.0的計劃。
-1
李隆雞
李隆雞

@戀戀美食

java里面有線程池,也就是說一般不直接用線程,而是用線程池。go里面也是這樣嗎,是不是go也不推薦直接 go xxx(),而是用go的攜程池。

儒雅隨和大師兄
儒雅隨和大師兄
這是肯定的,數量不可控的情況下,太多的協程反而使得性能下降
-1
七進制1
七進制1
錯誤處理能更優雅處理就更好了
-1
taadis
taadis

@戀戀美食 Go在服務端/網絡端/云計算/云原生等場景下的應用非常繁榮和普及了,但在GUI場景貌似沒有什么比較重量級的應用,能否介紹下Go在GUI方面的優劣勢,以及現有的一些Go相關的GUI庫或框架?

戀戀美食
戀戀美食
沒有GUI開發的經驗,但從谷歌自家項目中使用情況來看,確實也沒用Go來構建GUI,這方面Go的生態還沒成型。
oschina4cyy
oschina4cyy
回復 @Francesca : gioui , fyne , gogi
F
Francesca
Go似乎沒有看到開發GUI的案例
-1
靜了禪音

@戀戀美食 go如合面對像rust這樣無gc語言的竟爭,如何合理規避像由gc帶來的性能問題?由此gc的存在,會讓go在底層級別的系統編寫帶來無法規避的劣勢嗎?

飛酒
飛酒
全民機器人時代來臨后,rust的時代就來了,go這方面跟不上,注定會在這方面被甩下
戀戀美食
戀戀美食
回復 @SunnyGo : 是的,每種語言都有自身優勢,Go語言也沒必要朝Rust進向,其編譯器和運行時也在不斷地優化和改進。
SunnyGo
SunnyGo
go的機理就是go routine,沒于gc不太可能。你可以作一部分手動gc
-1
Doeeking
Doeeking

@戀戀美食 Go 的error在編寫多了程序后確實比較繁瑣,雖然其官方有新的error處理方案但遲遲沒有實現,因此請問如何優雅地處理error?此外雖然個人常常編寫一些go語言命令行、gui、web程序,但公司實際業務沒用上,請介紹一些其他公司已使用的實際應用場景,以便更好的了解go其他使用。謝謝

OSCHINA
登錄后可查看更多優質內容
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间