說說Go語言的簡

越是接觸的編程語言多了堕绩,越是做的項(xiàng)目多了,就越是覺得Go語言的簡單是多么一件不簡單的事——在一個慣有思維的世界中肺缕,舍棄了這么舊世界的東西左医,是非常不簡單的。

是的同木,我的觀點(diǎn)就是浮梢,加法大家都會做,但對一件事情做減法泉手、提煉精華黔寇,卻是相當(dāng)?shù)牟蝗菀椎摹?/p>

簡在哪里偶器?

沒有類

Go語言中沒有類(class)斩萌。
接觸過Lua或JavaScript的都知道,Lua和JavaScript沒有class關(guān)鍵字屏轰,要實(shí)現(xiàn)對象功能颊郎,是通過“原型”來實(shí)現(xiàn)的(prototype)。

type BaseObject struct { // 基類
    field1 int
}

type TestObject struct {  // 繼承自BaseObject
    BaseObject
    field2 int
}

沒有try, catch

Go語言沒有try和catch關(guān)鍵字霎苗?姆吭!
我想用慣了try和catch捕獲錯誤的工程師們肯定會非常驚訝。但我也是那種比較痛恨try-catch的人唁盏,它們的出現(xiàn)經(jīng)常讓錯誤難以偵察内狸。

// C#
try
{
    Do1()
    Do2()
    Do3()
}
catch (Exception e)
{
    Log(e.Message)
}

不開玩笑的說检眯,類似的try-catch大包圍非常的常見,到出錯了的時候昆淡,究竟是Do1還是Do2還是Do3的問題懊倘场? 不知道昂灵,好吧只能斷點(diǎn)了避凝。

以往在C#開發(fā)中,我更喜歡以類似的方式

// C#
IsNotNull(Do1, "Error! Do1 is null")
IsTrue(Do2, "Error! Do2 is false")

為錯誤做文字描述眨补,看起來啰嗦管削,但當(dāng)成千上萬的代碼堆積如山時,這樣做的好處卻是非常明顯的撑螺,瞄一眼就能定位到錯誤的地方含思。

Go語言中沒有try-catch,錯誤的捕捉其實(shí)就是類似這樣的方式:

// Go lang
do1Result, err := Do1()
if err != nil {
    fmt.Errorf("Do 1 is wrong!")
}

是的甘晤,適當(dāng)?shù)淖址枋鍪菃氯准螅珔s相當(dāng)于為做買好了保險。

沒有構(gòu)建工具

要建個C語言工程是吧安皱?最起碼裝個Turbo C调鬓、Visual Studio C++吧; 要建個Java工程吧酌伊?JVM腾窝、IDE一套東西要弄吧...

編程的世界里,構(gòu)建工具非常的多:make居砖、autoconf虹脯、cmake、Ant奏候、Maven循集、Gradle等等等;

在Go語言中蔗草,“go build”命令间聊,就是你的構(gòu)建工具;“go test”命令就是你的單元測試工具弊攘;開發(fā)握爷、編譯、測試模叙,它全部都幫你做好了歇拆。

強(qiáng)制代碼格式化

我是一個經(jīng)常會為單詞、空格、命名故觅、排版斟酌半天的人厂庇,Go語言的強(qiáng)制格式化十分對我的胃口——所有的空格、字符對齊输吏、花括號({})的位置都是在保存的一瞬間自動強(qiáng)制排版的宋列。

統(tǒng)一排版的代碼,會給大家一種非常舒服的感覺评也。美中不足的是沒有強(qiáng)制添加注釋功能炼杖,要不然就又少一個分歧點(diǎn)了......
比如我手賤,輸入:

const(
    ConstA
        ConstB
)

經(jīng)過go fmt進(jìn)行格式化盗迟,它就會變成

const (
    ConstA
    ConstB
)

嗯坤邪,強(qiáng)迫癥患者的最佳療法。

另外一提:

// Go lang
func Func()
{ // Compie error!

}

在C#中罚缕,花括號{是習(xí)慣另起一行的艇纺,而在Go于中,卻會導(dǎo)致編譯錯誤邮弹。

簡得不徹底的地方

Go語言的簡黔衡,是相對于有編程基礎(chǔ)的人來說的。這里提及一下我認(rèn)為他不夠簡的地方腌乡,更多是從小白盟劫、零基礎(chǔ)的人角度去考慮的,會讓他們?nèi)腴T造成困擾的与纽。

指針

Go語言中讓我覺得最不夠簡化的地方侣签,非指針莫屬了。

并不是說我討厭指針急迂,這里針對的是沒有基礎(chǔ)的小白的影所,即毫無編程基礎(chǔ)的普通人。它增加了Go語言入門的一難度僚碎,畢竟像其它的一些腳本語言如Python猴娩,是真的可以像寫英文詩一般快速入門。

標(biāo)準(zhǔn)庫的接口

畢竟定位于系統(tǒng)級編程的Go語言勺阐,標(biāo)準(zhǔn)庫的接口封裝更為抽象一些也是無可厚非的卷中。這使它更健壯、更靈活皆看,但降低了一定的易用成都仓坞。

標(biāo)準(zhǔn)庫的接口封裝抽象是怎么理解背零? 舉個超簡單的例子腰吟,像我們要打印一段文字:

// shell 
echo 'hello world'

使用shell來實(shí)現(xiàn),非常簡單。

# Python
print 'hello world'

而在腳本語言python中毛雇,也是非常簡單嫉称。

// Go lang
import "fmt"
func main() {
    fmt.Println("hello world")
}

而在Go語言中,就要稍微復(fù)雜灵疮,要導(dǎo)入包了织阅。更不用說像一些文件讀取、寫入方面的接口了震捣。

當(dāng)然了荔棉,系統(tǒng)級編程語言來說,這樣良好的模塊性設(shè)計其實(shí)是一大優(yōu)點(diǎn)蒿赢,只不過我們這里關(guān)注它的“簡”润樱,吹毛求疵。


Go語言更多是我業(yè)余的一些研究羡棵,而在實(shí)際工作中壹若,卻并未應(yīng)用開來。畢竟對領(lǐng)導(dǎo)們來說皂冰,舊有的熟悉的東西店展,才是穩(wěn)定的保證。

但是它更多讓我學(xué)習(xí)到的秃流,是它的思路——足夠的簡單赂蕴,狠心的舍棄不必要的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舶胀,一起剝皮案震驚了整個濱河市睡腿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌峻贮,老刑警劉巖席怪,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纤控,居然都是意外死亡挂捻,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門船万,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刻撒,“玉大人,你說我怎么就攤上這事耿导∩” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵舱呻,是天一觀的道長醋火。 經(jīng)常有香客問我悠汽,道長,這世上最難降的妖魔是什么芥驳? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任柿冲,我火速辦了婚禮,結(jié)果婚禮上兆旬,老公的妹妹穿的比我還像新娘假抄。我一直安慰自己,他們只是感情好丽猬,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布宿饱。 她就那樣靜靜地躺著,像睡著了一般脚祟。 火紅的嫁衣襯著肌膚如雪刑棵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天愚铡,我揣著相機(jī)與錄音蛉签,去河邊找鬼。 笑死沥寥,一個胖子當(dāng)著我的面吹牛碍舍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播邑雅,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼片橡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淮野?” 一聲冷哼從身側(cè)響起捧书,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎骤星,沒想到半個月后经瓷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洞难,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年舆吮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片队贱。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡色冀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出柱嫌,到底是詐尸還是另有隱情锋恬,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布编丘,位于F島的核電站与学,受9級特大地震影響彤悔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜癣防,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一蜗巧、第九天 我趴在偏房一處隱蔽的房頂上張望掌眠。 院中可真熱鬧蕾盯,春花似錦、人聲如沸蓝丙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渺尘。三九已至挫鸽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鸥跟,已是汗流浹背丢郊。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留医咨,地道東北人枫匾。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像拟淮,于是被迫代替她去往敵國和親干茉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法很泊,類相關(guān)的語法角虫,內(nèi)部類的語法,繼承相關(guān)的語法委造,異常的語法戳鹅,線程的語...
    子非魚_t_閱讀 31,602評論 18 399
  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多。不是我不學(xué)習(xí)昏兆,這世界變化快粉楚! 有時候還是蠻懷念十幾、二...
    碼園老農(nóng)閱讀 5,304評論 2 35
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,860評論 25 707
  • 怎么覺得桌椅好像變小了 不亮垫,是我們都長大了 —— 664
    嵐風(fēng)的葉子閱讀 99評論 0 0
  • 這是誰
    汪豆殼閱讀 98評論 0 0