go语言clone Go语言设计与实现( 三 )


" : PluginClean(!)- confirm (or auto-approve) removal of unused plugins
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Plugin commands are not allowed.
" Put your stuff after this line
syntax on
" ********************************************************************
" 这里省略go语言clone了其它不相关的插件
" vimgdb插件
run macros/gdb_mappings.vim
" 官方的插件
" Some Linux distributions set filetype in /etc/vimrc.
" Clear filetype flags before changing runtimepath to force Vim to
"reload them.
filetype off
filetype plugin indent off
set runtimepath+=$GOROOT/misc/vim
filetype plugin indent on
syntax on
autocmd FileType go autocmd BufWritePre buffer Fmt
" 代码补全的插件
Bundle 'Blackrush/vim-gocode'
" 代码跳转提示
Bundle 'dgryski/vim-godef'
" 代码结构提示
Bundle 'majutsushi/tagbar'
nmap F8 :TagbarToggleCR
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds': [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin': 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
花两天时间学习了 Go 语言 , 发现比 Node.js 高不知多少去了先说感受到go语言clone的先进性:
语法非常简洁go语言clone,有种在学 C 语言的感觉,学习过程觉得很轻松,没有太陡峭的曲线,但语言也完全够用
自带工具就非常强大,而且各 IDE 和 Editor 都能集成 , 开发工具完全不是问题
go get = git clone + go install,从 github 上直接 clone 下源码,编译出 .a 包文件和安装 bin 到 $GOPATH ,就可以本地任意地方使用go语言clone了 。反观 npm ,相信很多人不知道 NODE_PATH 的存在 。
gofmt 代码风格统一,码农们再也不用为空格与 Tab 争吵go语言clone了
go test 支持 benchmarks 和覆盖率测试
godoc 查看文档的工具 。支持本地执行 godoc -http=:8080 后就能在浏览器中访问 golang.org 的本地 copy 版,对被墙的同学是个不错的选择
支持 Github ( Gitlab 等也可以)远程包,不需要发布到类似 npm 那样的地方
并发用协程和 channel 非常容易写,业务逻辑中可以尽量避免回调
部署非常简单,可以运行二进制文件 , 也可以通过 go get 来安装 bin ,运维起来非常方便
API 稳定 , 据说从发布到现在语法基本没变,只是 Go 内部做了改进和优化
本人还用 Swift 写过 iOS ,发现 Swift 似乎是从 Go 身上学了不少东西 。。
劣势:
G...FF..WWW  , 想下个 pkg 安装文件非常困难,最后是通过 brew 下载的
国内资料少(这么简单的语言,似乎也不需要什么资料)
社区小不如 npm ,国内想找个工作更是困难
不确定性:
性能与 Java 比如何,相当于什么水平
综上所述,感觉 Go 确实是一个目前比较理想的开发工具,大家一起讨论讨论,人生苦短 , 为何不用 go ?
golang 进程创建 , fork , 以及热重启(无缝升级) 一般来说go语言clone , 进程go语言clone的操作使用的是一些系统的命令go语言clone , 所以go内部使用os包go语言clone , 进行一些运行系统命令的操作
os 包及其子包 os/exec 提供了创建进程的方法 。

推荐阅读