本文目錄一覽:
- 1、Go語言編程入門時需要注意什麼
- 2、如何使用Golang進行無心智負擔的編程
- 3、golang編程中,不屬於異常處理的關鍵詞是
- 4、go語言可以做什麼
- 5、Golang 網路編程絲綢之路 – TCP/UDP 地址解析
Go語言編程入門時需要注意什麼
剛入門Go語言小白需要注意以下五點:
1、注意書寫代碼的一些規範吧,特別是注意大小寫、英文標點符號區別等,在特別的位置寫上注釋。
2、主要是理解偽代碼所描述的演算法,偽代碼要注意是不能直接運行的。
3、注意編譯器版本與書籍上所介紹版本是否一致,也注意特殊符號,印刷版本可能與實際不一致。
4、書上的版本和當前所用的版本是否一致,有些情況下書上版本在現在來用已經過時了。
5、邏輯走通;給自己信心,其實起步階段不難的。
如何使用Golang進行無心智負擔的編程
不知讀者是否也會時刻想: 我該怎麼寫這段代碼才優雅, 後期改起來方便?
努力思考卻還是得不到最佳答案, 煩躁等負面情緒不約而來。這便是在編程過程中的心智負擔。
這篇文章將從多個方面來簡化思考, 希望它能給努力思考的你帶來一點小靈感.
java的23種設計模式? 再見.
不是說他們沒有作用,只是說它們太死板複雜,學習它們通常入不敷出。
對於編程還有很多需要注意的地方(下文),而不要只局限於設計模式。
我給出的建議是只需要理解一個大概,在平時編程中能用則用。
Golang相比Java來說, 對”面向對象”這件事的支持是”不完整”的.
但話又說回來現在的”面向對象編程”漸漸被扭曲為了”面向類編程”(COP),而COP是複雜並難以理解的,COP有好處但要發揮出來並不容易。所以Golang決定拋棄所有不必要的概念以改善這個問題。
現在不必再理解 封裝(這個簡單到不需要理解), 多態, 繼承.
在golang中只需要理解兩個更實在的東西: 介面, 組合.
介面
在Golang中只需要記得一個東西: Interface(介面).
參見io.Reader介面就知道這種設計有多厲害.
讀文件是它, 讀網路請求也是它, 更騷的是 對於linux(Every thing is a file)來說用它就能操作近乎整個系統了.
簡單的說: 當某個功能(如去北京)有多種(或者以後可能有多種)實現方式(如坐火車/飛機/騎車)的時候, 用介面.
組合
組合理解起來並不複雜, 不過是一個語法糖, 就算沒有組合功能也毫不影響Go程序的運行.
如下代碼, 沒有組合換一種寫法即可.
簡單的說: 組合能用則用,如果你不知道如何使用或者不用也並無大礙。
“開閉原則”對我啟發很大.
原文是這樣:
但其實我們在開發的時候並不是一直都在和對象打交道.
在我看來, “開閉原則”適用於平時寫的任何代碼.
完整理解”開閉原則”可能還是會造成心智負擔, 所以先打住, 只需要這樣:
這便是 “對修改閉合, 對擴展開放”.
這裡不得不在提及”面向函數編程”, 它的思想包括但不限於:
它正好利於修改, 利於寫出符合”開閉原則”的代碼.
默認的errors包在對於多層的複雜應用是不夠的,這種情況下建議自行封裝,但別太追求完美 在項目中夠用就好。我們等待官方方案即可:
restful能解決大部分命名問題.
你的代碼完全可以這樣無腦命名而不失優雅.
這樣的白話文真的很好命名與理解(根本不需要辭彙量).
無腦Goroution, 80%的情況下都沒問題.
如果你實在擔心, 用channel的做下並發數量控制就好, 或者使用更完整的工具叫”協程池”, 他們的實現都不複雜.
得益於golang的開源和這幾年的蓬勃發展,golang的生態已經十分完善,所以很多情況下我們應該”面相github編程”,第三方提供的代碼已能滿足我們大多數需求。同時 選用一個受歡迎的第三方代碼庫通常比自己的更可靠,後續維護也省心很多。
最省心的行為是: 先跟隨團隊再提出意見
golang編程中,不屬於異常處理的關鍵詞是
error。Go語言又稱Golang是Google開發的一種靜態強類型、編譯型、並髮型,並具有垃圾回收功能的編程語言,在該語言種類中error不屬於異常處理的關鍵詞,因為error僅僅是用來提示錯誤的詞,和異常處理功能無關。
go語言可以做什麼
1、伺服器編程:以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、數據打包、虛擬機處理、文件系統等。
2、分散式系統、資料庫代理器、中間件:例如Etcd。
3、網路編程:這一塊目前應用最廣,包括Web應用、API應用、下載應用,而且Go內置的net/http包基本上把我們平常用到的網路功能都實現了。
4、開發雲平台:目前國外很多雲平台在採用Go開發,我們所熟知的七牛雲、華為雲等等都有使用Go進行開發並且開源的成型的產品。
5、區塊鏈:目前有一種說法,技術從業人員把Go語言稱作為區塊鏈行業的開發語言。如果大家學習區塊鏈技術的話,就會發現現在有很多很多的區塊鏈的系統和應用都是採用Go進行開發的,比如ehtereum是目前知名度最大的公鏈,再比如fabric是目前最知名的聯盟鏈,兩者都有go語言的版本,且go-ehtereum還是以太坊官方推薦的版本。
自1.0版發布以來,go語言引起了眾多開發者的關注,並得到了廣泛的應用。go語言簡單、高效、並發的特點吸引了許多傳統的語言開發人員,其數量也在不斷增加。
使用 Go 語言開發的開源項目非常多。早期的 Go 語言開源項目只是通過 Go 語言與傳統項目進行C語言庫綁定實現,例如 Qt、Sqlite 等。
後期的很多項目都使用 Go 語言進行重新原生實現,這個過程相對於其他語言要簡單一些,這也促成了大量使用 Go 語言原生開發項目的出現。
Golang 網路編程絲綢之路 – TCP/UDP 地址解析
TL;DR 在使用 Golang 編寫 TCP/UDP socket 的時候,第一步做的就是地址解析。
該函數返回的地址包含的信息如下:
TCPAddr 里, IP 既可以是 IPv4 地址,也可以是 IPv6 地址。 Port 就是埠了。 Zone 是 IPv6 本地地址所在的區域。
從返回結果看該函數的參數, network 指 address 的網路類型; address 指要解析的地址,會從中解析出我們想要的 IP , Port 和 Zone 。
從源碼中可以看出,參數 network 只能是如下四個值,否則會得到一個錯誤。
解析過程跟 ResolveTCPAddr 的一樣,不過得到的是 *UDPAddr 。
UDPAddr 包含的信息如下:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192018.html