GO语言学习

Posted 林散

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO语言学习相关的知识,希望对你有一定的参考价值。

ubuntu 14.04 GO 语言编译环境的安装

1. 利用ubuntu的库安装

sudo apt-get install golang

但是用ubuntu的库安装有几个不好的地方:

  • golang的版本由ubuntu的库决定,ubuntu14.04目前提供的golang 1.2.1
  • golang的语言的环境设置已经默认设置,比如GOROOT设置为/usr/local/bin,GOPATH等

因此建议不要使用ubuntu的库安装golang环境

2. 使用golang官方文档安装

golang社区的安装指导https://golang.org/doc/install

2.1 卸载ubuntu14.04库安装的go

  • 卸载golang-go

    sudo apt-get  remove golang-go
    
  • 卸载golang-go及其依赖

    sudo apt-get remove --auto-remove golang-go
    
  • 卸载golang-go并删除其本地和配置文件

    sudo apt-get purge golang-go
    
  • 卸载golang-go及其依赖并删除其本地和配置文件

    sudo apt-get purge --auto-remove golang-go
    

2.2利用编译好的文件安装

wget https://storage.googleapis.com/golang/go1.6.2.linux-amd64.tar.gz

tar -C /usr/local -zxf go1.6.2.linux-amd64.tar.gz

设置环境变量,修改etc/profile文件,使默认搜索go所在位置

export PATH=$PATH:/usr/local/go/bin

如果go安装在其他位置,将其他位置加入PATH路径中

2.3 测试GO安装

设置go的工作环境,修改$HOME/.profile文件

export GOPATH=$HOME/gowork

测试hello-world

mkdir $HOME/gowork/src/hello
cd $HOME/gowork/src/hello && touch hello.go

将以下代码输入hello.go

package main
import "fmt"

func main() 

    fmt.Printf("hello, world\\n")

编译和测试

go install hello
$GOPATH/bin/hello

3. vim go 语言编写环境配置

3.1 vim go语言语法高亮

  1. 由于neocomplete插件要求vim7.4及以上,并且要求vim 支持lua,但是ubuntu 14.04 库安装的vim不支持lua,所以需要卸载后从源代码安装。 参考http://winter233.com/Using-Vim-with-Neocomplete/

    // 卸载原来的vim, 如果原来没有gvim,则命令中删除gvim
    sudo apt-get remove vim vim-runtime gvim
    
    //安装vim依赖的包和工具,如果不需要桌面环境的支持(gvim),则在命令中删除gnome\\gnomeui\\libgtk\\libatk\\libbonoboui\\libcairo\\libx11\\libxpm\\libxt, 如果使用git而不是hg,则删除mercurial
    sudo apt-get install libncurses5-dev libgnome2-dev libgnomeui-dev \\
    libgtk2.0-dev libatk1.0-dev libbonoboui2-dev \\
    libcairo2-dev libx11-dev libxpm-dev libxt-dev python-dev \\
    ruby-dev mercurial
    
    // install lua
    sudo apt-get install liblua5.2-dev lua5.2
    
    //compile vim74 from source, 如果没有桌面环境,则可删除<--enable-gui=gtk2>
    wget ftp://ftp.vim.org/pub/vim/unix/vim-7.4.tar.bz2
    tar xvf vim-7.4.tar.bz2
    cd vim74
    ./configure --with-features=huge \\
            --enable-multibyte \\
            --enable-rubyinterp \\
            --enable-pythoninterp \\
            --with-python-config-dir=/usr/lib/python2.7/config \\
            --enable-perlinterp \\
            --enable-luainterp \\
            --enable-gui=gtk2 --enable-cscope --prefix=/usr
    
    //set vim74 rumtimedir, and finish install
    make VIMRUNTIMEDIR=/usr/share/vim/vim74
    sudo make install
    
    //Check installation by typing vim --version in shell or :echo has("lua") in vim.
    
  2. 安装vundle,用来管理vim插件, vundle在github上,https://github.com/VundleVim/Vundle.vim

    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
    

    配置$HOME目录下的.vimrc文件,从链接地址上粘贴过来即可(略)

  3. 安装vim-go, vim的go语言插件,https://github.com/fatih/vim-go 修改.vimrc文件,添加如下:

    Plugin 'fatih/vim-go'
    
  4. vim-go要完全工作,还需要一些必要的工具(比如gocode, godef, goimport etc),这些工具可以通过vim自带的:GoInstallBinaries命令安装,如果之前安装过,可以通过:GoUpdateBinaries 更新,这样安装会使gocode等工具安装在$GOPATH/bin目录下。

  5. 安装neocomplete.vim, https://github.com/Shougo/neocomplete.vim这是vim-go推荐的实时自动补全的插件

    Plugin 'Shougo/neocomplete.vim'
    
  6. 安装ctags + gotags + tagbar, 其中由于ctags不支持go,所以使用与ctags兼容的gotags。

    // install ctags
    wget http://prdownloads.sourceforge.net/ctags/ctags-5.8.tar.gz
    tar -zxf ctags-5.8.tar.gz
    cd ctags && ./configure && make && make install
    
    // install gotags, 具体见gotags的github
    go get -u github.com/jstemmer/gotags
    // add config to .vimrc for tagbar
    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'
    \\ 
    
    //install tag using vundle 
    Plugin 'majutsushi/tagbar'
    //add config to .vimrc for quick start, 具体见tagbar的github
    nmap <F8> :TagbarToggle<CR>
    
  7. vim配置完之后,需要重新登陆终端才能生效。

以上是关于GO语言学习的主要内容,如果未能解决你的问题,请参考以下文章

Go语言之函数使用

Go语言入门13(runtime包)

webcron

php现在不好找工作了,我是该转到go还是java,听说php学java还是有一定难度的,到底有多难?

初始go语言

go语言学习笔记 — 基础 — go工具:性能分析,发现代码性能问题的具体位置 —— go pprof