• 打造完美的go开发环境


    基础开发工具

    sublime text2下载

    为何使用sublime text2?相信很多喜欢轻量级工具,开大量chrome网页以及使用大量小而精软件的开发者都喜欢editor吧,当然最主要是vim mode!

    安装package control

    打开后,按ctrl + ~打开命令行,或者在view->show console,复制如下代码,执行

    import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); os.makedirs( ipp ) if not os.path.exists(ipp) else None; urllib2.install_opener( urllib2.build_opener( urllib2.ProxyHandler()) ); by = urllib2.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); open( os.path.join( ipp, pf), 'wb' ).write(by) if dh == h else None; print('Error validating download (got %s instead of %s), please try manual install' % (dh, h) if dh != h else 'Please restart Sublime Text to finish installation')

     

    安装gosublime,配置

    作为在st上开发go的基础,必装,然后在settings-user里写上如下配置,设定一个golang的workspace,这样就可以自动提示import包里的方法了

    {
        "env": {
            "GOPATH": "~/workspace:$GS_GOPATH"
        },
        "autocomplete_builtins": true,
        "autocomplete_suggest_imports": true
    }

    安装golint

    golint用于检测语法问题,类似于jslint,但是它提示最多的无非是变量名不要用下划线啊,然后给出一个建议的变量名,要写注释啊...当然,写了注释之后,使用godoc -http=:8081 (端口随意)就可以在浏览器里看到刚才辛苦写的注释已经生成了文档

    go get github.com/golang/lint
    golint filename1 filepath1//可以使用多个参数指定目录或者文件

    可将其部署到gosublime或者fswatch中去

    安装goimporter

    这是一个比gofmt更厉害一点的工具,它会自动修改import里的包,还是十分实用的,不会因为import里的东西没用,或者用了某一个package而没有import导致的错误提示,这是节省时间的好东西,积小成多

    go get code.google.com/p/go.tools/cmd/goimports

    编译好之后,设置一个ln -s到$GOBIN目录(或者复制过去),并且将gosublime的user-setting添加一行,好东西啊~

    "fmt_cmd": ["goimports"]

    注:ln -s 需要绝对路径

    fswatch热编译

    go get github.com/codeskyblue/fswatch

    同样build好之后连接到$GOBIN下,或者/usr/bin之类目录,windows用户那建议放到$GOBIN下,编译的时候直接go build,不要对单独的fswatch.go编译,因为有多个package main文件

    在需要目录执行fswatch,自动生成.fswatch.json
    然后在command里写需要执行的命令,参考如下

    {
        "paths": [
            "."
        ],
        "depth": 2,
        "exclude": [],
        "include": [
            "\.(go|py|php|java|cpp|h|rb)$"
        ],
        "command": [
            "bash",
            "-c",
            "pgrep server | xargs kill && golint ./ && go build server.go && ./server"
        ],
        "env": {
            "POWERD_BY": "github.com/codeskyblue/fswatch"
        },
        "kill-signal": "KILL"
    }

    注意:command是自己写的,因为这个工具在我的Mac不能杀掉启动的进程,因此就手动加了kill的命令,具体如何修复还在研究源代码中~~

    将golint并入到监控目录中去,方便修改内容

    supervisor

    [program:vehiclestat]
    command=~/workspace/yourprogram
    autostart = true
    autorestart = true
    startsecs = 5
    user = root
    redirect_stderr = true
    stdout_logfile = /var/log/supervisord/yourprogram.log

    比较实用的监控进程的工具,相比较用nohup ./xxx &还是比较放心的

    其它

    设置当前目录为$GOPATH

    alias gopath='export GOPATH=`pwd` && echo $GOPATH'

    尤其适合多个不同目录下的go项目,在每个项目下运行一次gopath,就设置好了当前的gopath,十分方便

    总结:

    不知为何,我前一版本居然被移出首页,说是要原创,这东西就是我原创的啊,虽然工具都是别人的,但整合这些东西也是花了一定精力的啊!!!

    虽然有idea + goplugin比较好的方案,但还是比较喜欢手动配置,这样整一套下来,go的开发环境比较完整了,还有一个蛋疼的就是调试,难道调度还要不停地log.Println()吗???

  • 相关阅读:
    数据结构—链表
    python字母串查找基本操作
    python九九乘法表程序代码
    SpringMVC跨域问题排查以及源码实现
    深入理解MySql子查询IN的执行和优化
    Dubbo源码阅读-服务导出
    Disconf源码分析之启动过程分析下(2)
    Disconf源码分析之启动过程分析上(1)
    Java多线程volatile和synchronized总结
    Java多线程基础总结
  • 原文地址:https://www.cnblogs.com/qgymje/p/3912259.html
Copyright © 2020-2023  润新知