golang有咩缺點

71 回覆
3 Like 0 Dislike
2022-04-20 03:28:58
不過都要Google 大佬係慢慢推Go 出去, 搵到佢本身個發光點, 係大家好自然咁會諗用GOLANG 黎做,

例如依家寫web,通常第一時間會諗起JavaScript , 玩AI, deep learning pytorch , tensorflow 會諗起python ( opencv…etc ), 寫blog , 現有既野ecommecrce 就php Wordpress, magento , laravel .. etc

Go 其中一個例子係依家大家會拎黎搞go eth , blockchain 個類,
2022-04-20 03:49:30
Kubernetes
成個生態圈都係Go
2022-04-20 03:55:53
優點係cloud native
compile簡單 memory用得極少
js係碼係10倍起
同埋very opinionated
lint/format 得一套 非常規範化
SWE最愛

缺點係error handling極之臃腫
10行code 可能有4行係if err!= nil {}
少syntax sugar
咩map/reduce/arrow func全部冇
自己由頭寫啦
同埋樓上講冇generic type
睇下新版有冇改善
2022-04-20 04:17:01
Interface 還interface, inheritance 還inheritance
2022-04-20 04:19:43
我覺得if err != nil ok既 同try catch差唔多
我幾鐘意佢可以return 幾樣野同放function 做param
2022-04-20 04:22:58
try catch你可以係最出面一次過handle
但golang 假設你call十層 你就return左十次
同埋成日一個function入面8成code都係handle緊error
2022-04-20 04:26:25
都係
巴打公司用golang?
2022-04-20 04:28:17
yes devops/k8s
2022-04-20 04:33:16
咁無try catch 咁多縮排
又唔可以話係缺點
你最出面一個try catch
同if err != nil 嘛一樣
2022-04-20 04:36:55
講緊nested function call
你可以中間一 d wrapper唔catch
淨係最出面個caller先handle error

golang逼你逐層return error
出發點係好 但係真係好臃腫
2022-04-20 04:45:22
唔明
你都可以唔handle 直接return出去
最出面果層handle err
個logic都係一樣
2022-04-20 04:47:52
ok 明你講咩
同一個block裡面
少少啦,習慣左ok既
變左有個sense 要handle err
2022-04-20 04:52:31
try catch係你可以catch個call stack throw出嚟嘅error
go 你唔return點handle 最底個call stack嘅error
2022-04-20 04:58:57
成日好想試用 但到依家都未有啱用嘅地方
project仔一開始想試用
次次最後諗諗下都係python最快手

有冇咩go eth related嘅野可以整吓 而係真係golang會顯著有用?
2022-04-20 05:24:24
係架
有好有唔好啦
有時wrap太多層
errors.Wrapf()

個error message好冗長
2022-04-20 10:01:42
其實GOLANG 都唔係無try catch , 只係go 官方唔整,你可以用panic 同defer 黎做,go gin 就係用呢個方法
2022-04-20 10:02:01
Panic defer recover
2022-04-20 10:30:38
其實panic defer recover()都可以太濫用
個 logic flow會好亂
底層code又唔多啱用panic 如果唔係application layer又要四圍defer recover()
上層用又唔知自己recover咗d咩
最驚係其中一個case call少recover 成個production炒
Error handling golang真係差js幾條街
2022-04-20 12:21:56
我覺得好似rust咁用 Result<T, E> type加埋matching expression嚟處理error好似好過exceptions, 佢又有? operator, unwrap嗰類helper令你段error handling唔使咁verbose
Golang error handling我覺得同rust思路上相似, 但實作起嚟個syntax好似唔係好ergonomic
或者exception好似Java咁有checked exception都唔錯
2022-04-20 23:00:42
typescript 配react好撚難
2022-04-21 03:13:19
Generics 啱啱go1.18出咗啦
Btw我諗住話唔係data type嗰個interface
implement晒啲要用嘅function掉落邊到用都得好flexible
Go本身啲package啲function好多都用interface 用para
平時寫細programme一定諗go先 gen test又易 build又快輕鬆cross platform
不過我都少用channel 其實咩情況會適合玩channel?
2022-04-21 03:31:52
React 唔用typescript 會仲難
2022-04-21 10:09:22
parallel tasks/buffer之類
簡單errgroup配channel就可以寫個worker pool出嚟

cross platform
gorelease 加 github action好易整binary release
2022-04-21 10:10:38
我每隔半年開新project
通常都要花一晚去setup所有野
2022-04-21 10:18:55
比如你寫gorilla websocket個陣,每當有一個request 入黎個陣都開一個go routine read connection channel 以及一個write既go routine channel

例如你想起program 入面implement MQ (rabbitmq , AWS SQS/Sns…etc) 你需要寫一個read channel 去處理番MQ過黎既message (subscribe )

或者有某d情況你想implement parallel 既運算,有好多唔同既go routine 各自進行獨立既運算,之後做一個類似map reduce 去SUM up 或者處理番d result 類似 JS 既Promise.all 咁
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞