本文目錄一覽:
Go語言基礎語法(一)
本文介紹一些Go語言的基礎語法。
先來看一個簡單的go語言代碼:
go語言的注釋方法:
代碼執行結果:
下面來進一步介紹go的基礎語法。
go語言中格式化輸出可以使用 fmt 和 log 這兩個標準庫,
常用方法:
示例代碼:
執行結果:
更多格式化方法可以訪問中的fmt包。
log包實現了簡單的日誌服務,也提供了一些格式化輸出的方法。
執行結果:
下面來介紹一下go的數據類型
下表列出了go語言的數據類型:
int、float、bool、string、數組和struct屬於值類型,這些類型的變量直接指向存在內存中的值;slice、map、chan、pointer等是引用類型,存儲的是一個地址,這個地址存儲最終的值。
常量是在程序編譯時就確定下來的值,程序運行時無法改變。
執行結果:
執行結果:
Go 語言的運算符主要包括算術運算符、關係運算符、邏輯運算符、位運算符、賦值運算符以及指針相關運算符。
算術運算符:
關係運算符:
邏輯運算符:
位運算符:
賦值運算符:
指針相關運算符:
下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯用,這裡不做介紹。
if語法格式如下:
if … else :
else if:
示例代碼:
語法格式:
另外,添加 fallthrough 會強制執行後面的 case 語句,不管下一條case語句是否為true。
示例代碼:
執行結果:
下面介紹幾種循環語句:
執行結果:
執行結果:
也可以通過標記退出循環:
–THE END–
為什麼 Go 語言的性能還不如java
Go語言自亮相以來並沒有展示一個明確的方向,Google員工將Go語言稱為一個“試驗性語言”,稱其試圖融合Python等動態語言的開發速度和C或C++等編譯語言的性能和安全。一位Go語言的支持者概括而言Go語言如下:簡單、快速、安全、並發、快樂編程、開源;但Go語言缺乏方向以及其“集大成者”的嘗試很容易會導致其學貓不成學狗也不成,淪為四不像。儘管如此,編者仍然覺得Go語言有相當大的潛力:很多開發者對它感興趣——不僅它的最初設計者陣容強大,而且在參與修改源代碼的人群中也不乏大牛級人物。這很有可能幫助Go語言找到適合自己的方向,開拓系統編程的新方向。
你為什麼放棄golang?
因為內存管理粗糙。經常看到fmt.xxx導致內存佔用太多,反射導致內存佔用太多的抱怨。
go語言適合寫服務器組件,那種和業務數據無關的服務器。比如數據庫服務器、web服務器、日誌搜索引擎等。如果用來寫一個crm管理系統,非常累,因為缺乏好多高級特性和龐大的第三方庫,而且語法比較單一,總體感覺就跟寫命令行差不多。
Go語言是谷歌2009發布的編程語言,這個語言發明的目的,就是為了在運行速度接近C/C++語言的基礎上(注意是接近),降低開發者的門檻,減少開發難度。
Go語言,在功能上沒有超過C/C++,適用者為沒有C/C++經驗的開發者,開發出接近C效率的程序。對於已經熟練掌握C/C++的開發者來說,Go語言沒有優勢,還要重學語法,適應開發環境,明顯是不符合效率的。
總結
其實語言這東西,都有其優勢和劣勢。而且有些東西並不是純技術的。比如java的優勢在於清晰的語意表達。寫代碼的上限不高,但是下限也不低,適合工業開發。
而go呢,不得不說go在微服務這塊有先天優勢。畢竟java中要實現go的很多功能,需要引入第三方庫。很笨重。而go原生支持,這個微服務就很輕巧。但是go的語法太活,工業用是一個挺大的弊端。
erlang golang學習哪個?
個人建議學習Golang,主要原因如下:
Erlang的硬傷在於代碼的可讀性、表現力。為什麼說是硬傷? 因為對一門語言來說,語法是不大可能會大幅度變更的, 而且不會出現大的變化;
Erlang的軟肋在於高質量的庫少。儘管有不少殺手級應用, 同樣Go在這方面也是軟肋, 這一點對於一個不到五年的語言有情可原, 但對於一個20多年的語言是不是有點說不過去;
Erlang不合群。 這主要體現在跟其他語言的交互性上, 當然這也有深層次的原因, Erlang本身有自己的哲學, 如出錯恢復機制, 你融入一個其他語言的東西進去, 這帳就不好算,就好比你硬要讓一個喝咖啡的跟一個吃大蒜的坐在一起, 總之你寫一個Erlang的port遠遠比Go複雜, 甚至比Python/Java還要複雜, 這就造成了Erlang在底層編程上效果不是很好, 沒法利用linux已有的很多優秀成果,我一直認為Erlang的什麼的mysql/pg/oracle驅動都沒有必要存在, Erlang一定是一個self-container應用, 你只要用到了其他東西, 根據木桶理論, 你就不敢號稱9個9,以系統的眼光看問題, 我覺得一個系統的魯棒性不能依賴於某一組件, 這也是為什麼愛立信本身的Erlang應用並不廣泛;
Erlang的的報錯信息太讓人糾結了。在Erlang中一切都是並行的, 所以它根本不care是物理哪一行出錯, 只跟Actor綁定, 然後告訴你Actor的ID和出錯代號。這一點Golang就做了很好的折中, 不需要並行的時候你老老實實的寫串行代碼, 需要並行的時候也有較複雜的機制來應對, 合乎情理。
原創文章,作者:TEXWW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/325274.html