標籤:

go語言可以做什麼樣的軟體開發?

就是web 圖形界面 嵌入式 遊戲之類的 go都能做么?


謝邀

Golang非常適合開發遊戲伺服器, 特別是手游伺服器.

Golang開發手游伺服器有以下優點

1. 崩潰可以被捕捉,甚至恢復. Golang在這點上擁有和腳本語言一樣的快速捕獲錯誤的能力

2. 非常強的類型系統, 即便重構也不會全家火葬場. 想想js和lua吧, 噩夢

3. 非常簡單的語法. 發稿時, 中文的Golang書不到3本. 內容和角度還基本差不多. 不是說這語言沒啥可學. 而是這語言確實簡單到跟著官網跑完教程就可以寫代碼的程度

4. 因為簡單, 所以招人容易啊. 當年寫C++寫, 曾經勸朋友公司轉Golang, 結果幾年後, 他在找我要伺服器開發人員時, 市場上已經完全找不到C++有經驗的伺服器程序了. 而只要有代碼經驗的程序都可以在1周內馬上開始編寫伺服器

https://github.com/davyxu/cellnet

本人開發的Golang的遊戲伺服器底層

Golang開發工具也是大有超越Python的趨勢

優點

1. 性能優勢, 甩Python幾條街

2. 開發環境比Python方便

3. 可以方便的調用並發

GitHub - davyxu/tabtoy: 跨平台的高性能便捷電子表格導出器

本人開發的並發電子表格導出工具


你邀請我回答的恰恰是我不懂的技術範圍。

但是遊戲服務端應該是可以做的。國內有些遊戲公司已經在用GO做了,前幾天成都的一哥們跟我說某家遊戲公司正在用GO重寫他們的服務端。


從設計時的目標講,伺服器是Go最擅長的領域。這裡包括Web伺服器和遊戲伺服器。原因是,伺服器面臨的問題是如何復用io,最大化單台機器的吞吐量。而Go的goroutine模型,一方面混合使用線程和非同步io,來達到最大化io吞吐量的能力,另一方面將線程和非同步io的操作簡化為goroutine操作,不需要程序員自己考慮底層細節,全部使用線程模型+順序執行的方式來開發,降低開發門檻。

Go可以在嵌入式上跑,目前編譯器官方支持ARM等平台的交叉編譯。Go的單bin執行文件,會讓部署變得很容易,只需要拷貝一個bin文件到目標平台就可以,不需要搭建複雜的環境。不過具體性能需要測試。

Go並不適合開發UI,原因是官方壓根就沒有打算做UI這些事。UI一般來說,都是和平台緊密結合的,這麼多年,wsWidget,QT,Gtk,想解決跨平台UI開發的事情,但是解決的都不好。從根本上說,就是因為只有平台自己的UI庫,才能最大化UI的能力。Go作為一種通用平台為目標的開發語言,對特有平台的支持很弱,就不意外了。不過,不知道Google有沒有打算把Go最終作為Android平台的開發。如果最終能成為Android開發的官方語言的話,可以期待Go來開發Android UI。但是,依舊是平台限定的UI,而不是通用解決方案。


你說提到的我認為只有遊戲而且還是需要一定規模的高並發高性能運算要求的遊戲伺服器可以用 Go來開發外,其他的Web、UI還是考慮用更廉價更好開發的 js、python 吧。


推薦閱讀:

如何理解 slice 的 capacity?
如果編碼規範要求 Go 代碼每行不超過 100 個字元,是否合理,為什麼?
Go 語言的 slice 為啥有這樣的奇怪問題呢?
golang寫法疑問?

TAG:Go語言 |