GO-口吐芬芳
最近有個(gè)項(xiàng)目要用socket做前后端交互, 看到 go websocket 居然支撐 單服務(wù)器100 0000 連接.內(nèi)存不用1G. 它滴娘個(gè)腿~
對于我們這種用java 寫個(gè)socket娘扩,發(fā)布到神龍服務(wù)器上開一百個(gè)線程就卡到飛起的三流程序員來說凄鼻,天神有木有!M徽铡静尼!
也算是老司機(jī),不曾想有一天拔在這鬼坑里出不來.*** ,就不能簡單暴力點(diǎn)担败?
開篇-環(huán)境-MAC
我的環(huán)境 mac,其它環(huán)境別往下看了,鬼知道你是什么問題龄恋!自己爬去,我都沒爬出來還管球你趴生!
下載
官網(wǎng), 下載
我下的版本是 Apple MacOS / go1.14.darwin-amd64.pkg
一頓鼠標(biāo)Next 之后, go 成功安裝到 /usr/local/go
我一直堅(jiān)信這**是我整個(gè)GO環(huán)節(jié)里最順利的時(shí)刻
環(huán)境變量
因?yàn)?shell 環(huán)境用的 zsh, 確保 開機(jī)在命令行就可以用到 GO 命令 , PATH阀趴。這個(gè)跟其它系統(tǒng)、其它應(yīng)用可執(zhí)行文件一個(gè)意思苍匆,不嘚嘚刘急。
沒安裝zsh 這里
啟動(dòng)臺(tái)》其它》終端
code@MB ~ % vi ~/.bash_profile
export GOPATH=$HOME/go
export GOPROXY=https://goproxy.io
export GO111MODULE=auto
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:$GOPATH
> esc :wq
# 如果有權(quán)限問題, 就 sudo vi ...
# 為了上面這堆環(huán)境變量我沒少折騰 你照抄好了。
vi ~/.zshrc
source $HOME/.bash_profile
esc wq
> source ~/.zshrc # 刷新整個(gè)配置,這個(gè)之后應(yīng)該在什么位置都可以 go help
> go help
> ...
IDE 編程工具
在 Visual Studio Code 如日中天的今天浸踩,其它都是垃圾叔汁!反正我寫java、node、flutter什么亂七八糟的都用這個(gè).
下載完成后在 Extensions 里搜 GO ,管它什么牛鬼蛇神据块,看著順眼的都一通 install! 最少得裝top兩,當(dāng)程序員打開任何界面不能空手點(diǎn)XX,橫豎撈點(diǎn)码邻。
然后
Code 》 Preferences 》Settings 》 User(作用域) 》 Extensions 》Go
Edit in settings.json, 下面這段復(fù)制進(jìn)去. 重啟 VS Code 一次。
"go.formatTool": "goimports",
"go.useLanguageServer": true,
"go.gocodeAutoBuild": true,
"go.gopath": "/Users/codes/go",
"[markdown]": {
"editor.defaultFormatter": "yzhang.markdown-all-in-one"
},
"go.languageServerFlags": [
"serve",
"-rpc.trace",
"--debug=localhost:6060",
]
自己看字面意思另假,懶得注釋像屋!
反正為了能正常編譯,這幾個(gè)配置翻了一堆網(wǎng)頁边篮,燒了我三杯速溶咖啡己莺,個(gè)中艱辛爾等自行理解!鬼知道還有什么大坑戈轿,后面慢慢補(bǔ)充凌受。
項(xiàng)目創(chuàng)建
相對于JAVA/maven,Node/NPM來說,GO的依賴管理不知道是什么goshi思杯!總之第一感覺就是思路清奇胜蛉、邏輯混亂。搞明白估計(jì)得不少時(shí)間色乾。
有用文字能描述清楚的大神,請直接提交到這里,插香跪拜誊册!
我們用官方提供的mod來管理依賴
創(chuàng)建了個(gè)目錄。用來踩坑
> mkdir -p ~/git/projects/go/hello
> cd ~/git/projects/go/hello
> go mod init
初始化mod管理依賴項(xiàng)目環(huán)境方式杈湾,跟環(huán)境變量里的 export GO111MODULE=auto 相關(guān)解虱。
這里 有說明,但是我看完實(shí)操還是云里霧里漆撞。
VS Code》File》Open 上面創(chuàng)建的目錄殴泰。
主命令文件
新建 main.go 》F5
package main
import (
"io"
"net/http"
"os/exec"
)
func hello(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "hello this boll chat server! $9999")
}
func main() {
http.HandleFunc("/", hello)
http.ListenAndServe(":8000", nil)
cmd := exec.Command("open", "http://localhost:8000")
cmd.Output()
}
good luck !!!