美文网首页
GO 踩坑入门篇

GO 踩坑入门篇

作者: 拈笔畵 | 来源:发表于2020-03-13 17:59 被阅读0次

    GO-口吐芬芳

    最近有个项目要用socket做前后端交互, 看到 go websocket 居然支撑 单服务器100 0000 连接.内存不用1G. 它滴娘个腿~
    对于我们这种用java 写个socket,发布到神龙服务器上开一百个线程就卡到飞起的三流程序员来说,天神有木有!!!

    也算是老司机,不曾想有一天拔在这鬼坑里出不来.*** ,就不能简单暴力点?

    开篇-环境-MAC

    我的环境 mac,其它环境别往下看了,鬼知道你是什么问题!自己爬去,我都没爬出来还管球你!

    下载

    官网, 下载
    我下的版本是 Apple MacOS / go1.14.darwin-amd64.pkg
    一顿鼠标Next 之后, go 成功安装到 /usr/local/go

    我一直坚信这**是我整个GO环节里最顺利的时刻

    环境变量

    因为 shell 环境用的 zsh, 确保 开机在命令行就可以用到 GO 命令 , GOPATH/bin 得加入到PATH。这个跟其它系统、其它应用可执行文件一个意思,不嘚嘚。

    没安装zsh 这里

    启动台》其它》终端
    
    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  
    # 如果有权限问题, 就 sudo vi ...
    # 为了上面这堆环境变量我没少折腾 你照抄好了。
    
    vi ~/.zshrc
    source $HOME/.bash_profile
    
    esc wq
    
    > source ~/.zshrc  # 刷新整个配置,这个之后应该在什么位置都可以 go help
    > go help 
    > ...
    

    IDE 编程工具

    Visual Studio Code 如日中天的今天,其它都是垃圾!反正我写java、node、flutter什么乱七八糟的都用这个.
    下载完成后在 Extensions 里搜 GO ,管它什么牛鬼蛇神,看着顺眼的都一通 install! 最少得装top两,当程序员打开任何界面不能空手点XX,横竖捞点。

    然后
    Code 》 Preferences 》Settings 》 User(作用域) 》 Extensions 》Go
    Edit in settings.json, 下面这段复制进去. 重启 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",
     ]
    

    自己看字面意思,懒得注释!
    反正为了能正常编译,这几个配置翻了一堆网页,烧了我三杯速溶咖啡,个中艰辛尔等自行理解!鬼知道还有什么大坑,后面慢慢补充。

    项目创建

    相对于JAVA/maven,Node/NPM来说,GO的依赖管理不知道是什么goshi!总之第一感觉就是思路清奇、逻辑混乱。搞明白估计得不少时间。
    有用文字能描述清楚的大神,请直接提交到这里,插香跪拜!
    我们用官方提供的mod来管理依赖

    创建了个目录。用来踩坑

    
    > mkdir -p ~/git/projects/go/hello 
    > cd ~/git/projects/go/hello  
    > go mod init     
    
    

    初始化mod管理依赖项目环境方式,跟环境变量里的 export GO111MODULE=auto 相关。
    这里 有说明,但是我看完实操还是云里雾里。

    VS Code》File》Open 上面创建的目录。

    主命令文件

    新建 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 !!!

    相关文章

      网友评论

          本文标题:GO 踩坑入门篇

          本文链接:https://www.haomeiwen.com/subject/jxdsshtx.html