go语言gtk开发环境 go语言开发界面

如何配置go语言开发环境1.1 Go 安装
Go的三种安装方式
Go有多种安装方式go语言gtk开发环境,go语言gtk开发环境你可以选择自己喜欢的 。这里我们介绍三种最常见的安装方式go语言gtk开发环境:
Go源码安装:这是一种标准的软件安装方式 。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码安装可以自己定制 。
Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统 。这种方式适合快速安装,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了 。**推荐这种方式**
第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等 。这种安装方式适合那些熟悉相应系统的用户 。
最后,如果go语言gtk开发环境你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GVM,这是目前在这方面做得最好的工具,除非你知道怎么处理 。
Go源码安装
在Go的源代码中,有些部分是用Plan 9 C和ATT汇编写的 , 因此假如你要想从源码安装,就必须安装C的编译工具 。
在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具 。
在类Unix系统中,需要安装gcc等工具 。例如Ubuntu系统可通过在终端中执行sudo apt-get install gcc
libc6-dev来安装编译工具 。
在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc , 并设置相应的环境变量 。
你可以直接去官网下载源码,找相应的goVERSION.src.tar.gz的文件下载,下载之后解压缩到$HOME目录 , 执行如下代码:
cd go/src
./all.bash
运行all.bash后出现"ALL TESTS PASSED"字样时才算安装成功 。
上面是Unix风格的命令,Windows下的安装方式类似,只不过是运行all.bat , 调用的编译器是MinGW的gcc 。
如果是Mac或者Unix用户需要设置几个环境变量,如果想重启之后也能生效的话把下面的命令写到.bashrc或者.zshrc里面,
export GOPATH=$HOME/gopath
export PATH=$PATH:$HOME/go/bin:$GOPATH/bin
如果你是写入文件的,记得执行bash .bashrc或者bash
.zshrc使得设置立马生效 。
如果是window系统,就需要设置环境变量 , 在path里面增加相应的go所在的目录,设置gopath变量 。
当你设置完毕之后在命令行里面输入go,看到如下图片即说明你已经安装成功
图1.1 源码安装之后执行Go命令的图
如果出现Go的Usage信息,那么说明Go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了Go的安装目录 。
关于上面的GOPATH将在下面小节详细讲解
Go标准包安装
Go提供了每个平台打好包的一键安装,这些包默认会安装到如下目录:/usr/local/go
(Windows系统:c:\Go),当然你可以改变他们的安装位置 , 但是改变之后你必须在你的环境变量中设置如下信息:
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
上面这些命令对于Mac和Unix用户来说最好是写入.bashrc或者.zshrc文件,对于windows用户来说当然是写入环境变量 。
如何判断自己的操作系统是32位还是64位?
我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型 。
Windows系统用户请按Win R运行cmd,输入systeminfo后回车,稍等片刻,会出现一些系统信息 。在“系统类型”一行中 , 若显示“x64-based
PC”,即为64位系统;若显示“X86-based PC”,则为32位系统 。
Mac系统用户建议直接使用64位的,因为Go所支持的Mac OS X版本已经不支持纯32位处理器了 。
Linux系统用户可通过在Terminal中执行命令arch(即uname
-m)来查看系统信息:
64位系统显示
x86_64
32位系统显示
i386
Mac 安装
访问下载地址 , 32位系统下载go1.4.2.darwin-386-osx10.8.pkg , 64位系统下载go1.4.2.darwin-amd64-osx10.8.pkg,双击下载文件,一路默认安装点击下一步,这个时候go已经安装到你的系统中,默认已经在PATH中增加了相应的~/go/bin,这个时候打开终端,输入go
看到类似上面源码安装成功的图片说明已经安装成功
如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在 , 那么可以检查一下自己的PATH环境变中是否包含了go的安装目录 。
Linux 安装
访问下载地址 , 32位系统下载go1.4.2.linux-386.tar.gz,64位系统下载go1.4.2.linux-amd64.tar.gz,
假定你想要安装Go的目录为 $GO_INSTALL_DIR,后面替换为相应的目录路径 。
解压缩tar.gz包到安装目录下:tar zxvf go1.4.2.linux-amd64.tar.gz -C
$GO_INSTALL_DIR 。
设置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin
然后执行go
图1.2 Linux系统下安装成功之后执行go显示的信息
如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录 。
Windows 安装
访问Google Code 下载页,32
位请选择名称中包含 windows-386 的 msi 安装包 , 64 位请选择名称中包含 windows-amd64 的 。下载好后运行 , 不要修改默认安装目录
C:\Go\ , 若安装到其他位置会导致不能执行自己所编写的 Go 代码 。安装完成后默认会在环境变量 Path 后添加 Go 安装目录下的 bin 目录
C:\Go\bin\,并添加环境变量 GOROOT,值为 Go 安装根目录 C:\Go\。
验证是否安装成功
在运行中输入 cmd 打开命令行工具,在提示符下输入 go,检查是否能看到 Usage 信息 。输入
cd %GOROOT%,看是否能进入 Go 安装目录 。若都成功 , 说明安装成功 。
不能的话请检查上述环境变量 Path 和 GOROOT 的值 。若不存在请卸载后重新安装,存在请重启计算机后重试以上步骤 。
第三方工具安装
GVM
gvm是第三方开发的Go多版本管理工具,类似ruby里面的rvm工具 。使用起来相当的方便,安装gvm使用如下命令:
bash(curl -s -S -L )
安装完成后我们就可以安装go了:
gvm install go1.4.2
gvm use go1.4.2
也可以使用下面的命令,省去每次调用gvm use的麻烦: gvm use go1.4.2 --default
执行完上面的命令之后GOPATH、GOROOT等环境变量会自动设置好,这样就可以直接使用了 。
apt-get
Ubuntu是目前使用最多的Linux桌面系统,使用apt-get命令来管理软件包,我们可以通过下面的命令来安装Go,为了以后方便,应该把
git mercurial 也安装上:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:gophers/go
sudo apt-get update
sudo apt-get install golang-stable git-core mercurial
homebrew
homebrew是Mac系统下面目前使用最多的管理软件的工具 , 目前已支持Go,可以通过命令直接安装Go,为了以后方便,应该把
git mercurial 也安装上:
brew updatebrew upgrade
brew install go
brew install git
brew install mercurial
为什么苹果可以用两种编程语言开发应用?而安卓只能用JAVA 。不能用其他呢?Go语言不支持安卓?苹果公司允许开发人员使用 Objective-C 和 Swift 两种编程语言开发 iOS 应用,因为这两种语言已经紧密地与苹果的开发环境和工具集整合在一起 。
安卓操作系统原生支持 Java 语言,因此它是安卓应用开发的首选语言 。但是,安卓也支持使用其他语言(如 Kotlin)来开发应用 , 并且使用其他语言的开发人员可以通过 Java Native Interface (JNI) 访问安卓的底层系统 API 。
Go语言不是安卓操作系统原生支持的语言 , 因此需要使用其他方法才能在安卓上开发 Go 语言应用 。
具体的方法有:
gomobile: Go 语言官方支持的工具 , 用于在安卓和 iOS 上编译 Go 代码为本地应用 。
go-android: 一个开源库,用于在安卓上运行 Go 语言代码 。
go-gtk: 一个库,用于在安卓上使用 GTK构建 GUI 应用 。
这些项目允许开发人员在安卓上使用 Go 语言开发应用,但请注意 , 目前这些项目可能仍然处于试验阶段,不保证稳定性和性能 。
如何在配置Windows下的GTK 开发环境 00 半瓶墨水Windows下也可以使用gtk 编程,就像widows下也可以使用qt编程一样,不同的是,qt是基于c的类,和在windows下配置qt开发环境相比,配置gtk要简单的多,当然,其实两样都一样的简单,只不过在安装qt时我遇到了版本号的问题,不过从时间上来说gtk的安装也更省时间点,包括从下载的库来看gtk都比qt小得多,好吧,说了一些乱七八糟的东西,现在开始
首先得先下载gtk库,这个可以到谷歌去搜索gtk for windows好吧,还是我直接给链接吧,我不确定这个会一直有效
全都是英语,不过没关系,我们只需要下载all-in-one bundle
当然如果你想要按着自己的方式下载我也没意见
好了,下载完后将zip文件解压到指定目录(这里说明一下,你最好安装一个mingw)
然后我们设置一下环境路径
我的电脑---属性---高级---环境变量
在用户变量或者是系统变量那里找到PATH,没有也可以自己创建,我一般喜欢使用用户环境变量,然后加上我们gtk安装的路径下的bin目录,比如我的安装在C;\mingw\gtk \bin,多个环境路径之间用分号分开,这个不用我说了吧
好了,如果你是用的用户环境变量,那么保存后不需要重启就会生效,如果是系统环境变量的话可能你需要重启后才能生效
现在我们写一个简单的gtk程序
#include gtk/gtk.h
int main(int argc,char **argv)
{
GtkWidget *win;
gtk_init(argc,argv);
win=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(win);
g_signal_connect(G_OBJECT(win),"destroy",GTK_SIGNAL_FUN(gtk_main_quit),NULL);
gtk_main();
return 0;
}
现在我们使用gcc在msys下进行编译
gcc -o gtk gtk.c `pkg-config --cflags --libs gtk -2.0` -mwindows
不出意外你就可以执行gtk.exe并打开一个窗口了
-mwindows选项主要是为了程序运行时没有dos窗口,不加的话执行时会有一个dos窗口,如果你没有安装msys的话,比如你装的是dev-cpp的话那么你可能要在命令提示行下这样做才能编译
pkg-config --cflags --libs gtk -2.0arg.bat
然后打开arg.bat在那一大堆字符串前加上gcc -o gtk gtk.c 然后在最后面加上 -mwindows,保存退出后再arg就可以正确编译了
这主要是因为我们在编译gtk程序的时候要指定包含文件路径,链接库的路径等等,而这些使用pkg-config加上上面的参数可以得到,而在linux下使用``在反引号之间的内容作为单独的命令并进行运行,然后用结果替换掉当前反引号之间的内容,这就是为什么用bat文件要这样做的原因,如果cmd下也有这样的操作的话那么可以像在linux下那样去做,所以如果你安装了msys mingw开发环境的话,会比较简单,而如果是dev-cpp的话要费点力气,而如果是vs的话,好吧,我还没试过
安装GTK开发环境,未满足依赖关系,如何解决源不对 , 把网易镜像的源全部重新加了一遍就可以了 。就是这个软件装真是多阿 。。。。。
将会安装下列额外的软件包:
accerciser anjuta anjuta-common at-spi-doc autoconf autogen automake autotools-dev cvs debhelper devhelp devhelp-common
docbook docbook-dsssl docbook-to-man docbook-xsl docbook-xsl-doc-html eog-dev epiphany-browser epiphany-browser-data
epiphany-browser-dev evolution-dev exuberant-ctags festival festlex-cmu festlex-poslex festvox-kallpc16k gedit-dev
gettext gir1.0-atk-1.0 gir1.0-clutter-1.0 gir1.0-freedesktop gir1.0-glib-2.0 gir1.0-gstreamer-0.10 gir1.0-gtk-2.0
gir1.0-pango-1.0 glade glade-gnome global gnome-api-docs gnome-common gnome-core-devel gnome-js-common gstreamer0.10-doc
gstreamer0.10-plugins-base-doc gstreamer0.10-plugins-good-doc gstreamer0.10-plugins-ugly-doc gtk-doc-tools gtranslator
hal-doc html2text intltool intltool-debian ipython jade libart-2.0-dev libatk1.0-dev libatk1.0-doc libatspi-dev
libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libcairo2-dev
libcairo2-doc libcamel1.2-dev libcanberra-doc libdb4.6 libdbus-1-dev libdbus-glib-1-dev libdbus-glib-1-doc libdevhelp-1-1
libdirectfb-dev libdirectfb-extra libebook1.2-dev libedataserver1.2-dev libedataserverui1.2-dev libenchant-dev
libesd0-dev libestools1.2 libexpat1-dev libffi-dev libfontconfig1-dev libfreetype6-dev libgail-dev libgail-doc
libgail-gnome-dev libgconf2-dev libgcrypt11-dev libgda-4.0-4 libgda-4.0-common libgdl-1-3 libgdl-1-common libgdl-1-dev
libgirepository1.0-0 libglade2-dev libgladeui-1-9 libglib2.0-dev libglib2.0-doc libgmime-2.4-dev libgnome-desktop-dev
libgnome-keyring-dev libgnome-menu-dev libgnome-speech-dev libgnome-speech7 libgnome2-dev libgnome2-doc
libgnomecanvas2-dev libgnomecanvas2-doc libgnomecups1.0-1 libgnomekbd-dev libgnomeprint2.2-0 libgnomeprint2.2-data
libgnomeprintui2.2-0 libgnomeprintui2.2-common libgnomeui-dev libgnomeui-doc libgnomevfs2-dev libgnutls-dev libgp11-dev
libgpg-error-dev libgstreamer-plugins-base0.10-dev libgstreamer0.10-dev libgtk2.0-dev libgtk2.0-doc libgtkhtml-editor-dev
libgtkhtml3.14-dev libgtksourceview2.0-dev libgtksourceview2.0-doc libgtop2-dev libgweather-dev libice-dev libidl-dev
libjpeg62-dev libltdl-dev libmail-sendmail-perl libnautilus-extension-dev libnotify-doc libnspr4-dev liboobs-1-dev
libopts25 libopts25-dev liborbit2-dev libpanel-applet2-dev libpanel-applet2-doc libpango1.0-dev libpango1.0-doc
libpixman-1-dev libpng12-dev libpopt-dev libpthread-stubs0 libpthread-stubs0-dev librsvg2-dev libseed0 libselinux1-dev
libsepol1-dev libsm-dev libsoup-gnome2.4-dev libsoup2.4-dev libsoup2.4-doc libsp1c2 libsqlite3-dev
libstartup-notification0-dev libsys-hostname-long-perl libsysfs-dev libtasn1-3-dev libtelepathy-glib-doc libtool
libtotem-plparser-dev libunique-dev libvala0 libvte-dev libvte-doc libwebkit-dev libwnck-dev libx11-dev libxau-dev
libxcb-render-util0-dev libxcb-render0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev
libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxklavier-dev libxml2-dev libxml2-doc libxrandr-dev
libxrender-dev libxres-dev libxtst-dev m4 orbit2 po-debconf policykit-1-doc python-bugbuddy python-dbus-doc python-dev
python-evince python-evolution python-foolscap python-gnome2-desktop python-gnome2-desktop-dev python-gnome2-dev
python-gnome2-doc python-gnomedesktop python-gnomeprint python-gobject-dev python-gtk2-dev python-gtk2-doc python-gtop
python-mediaprofiles python-metacity python-pyorbit-dev python-rsvg python-totem-plparser python-wxgtk2.8
python-wxversion python2.6-dev sp x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev
x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-record-dev x11proto-render-dev x11proto-resource-dev
x11proto-xext-dev x11proto-xinerama-dev xtrans-dev zlib1g-dev
建议安装的软件包:
libgtkmm2.0-dev libgnomemm2.0-dev autoconf2.13 autoconf-archive gnu-standards autoconf-doc dh-make psgml docbook-defguide
jadetex docbook-dsssl-doc libsaxon-java libxalan2-java docbook-xsl-saxon fop xalan dbtoepub pidgin-festival
festival-freebsoft-utils gettext-doc doxygen apache httpd id-utils python-doc python-gnome2-extras-doc bluefish
python-profiler python-numpy python-matplotlib python-qt3 python-qt4 libgcrypt11-doc libgda-4.0-bin libgda-4.0-mysql
libgda-4.0-postgres python-subunit gnutls-doc gnutls-bin guile-gnutls libtool-doc sqlite3-doc automaken gfortran
fortran95-compiler gcj libunique-doc libmail-box-perl bug-buddy python-gnome2-desktop-doc python-gnome2-desktop-dbg
wx2.8-doc wx2.8-examples python-wxtools ruby tcsh csh octave3.0 mksh pdksh
如何配置go语言集成开发环境 vim1、编译vimgdb
下载vimgdb73和vim73
mkdir -p ./tmp
cd tmp
tar zxvf ../vim-7.3.tar.gz
unzip ../vimgdb-for-vim7.3-master.zip
mv vimgdb-for-vim7.3-master vimgdb-for-vim7.3
patch -p0vimgdb-for-vim7.3/vim73.patch
cd vim73
安装依赖
sudo apt-get install build-essential
sudo apt-get build-dep vim-gtk
sudo apt-get install libncurses5-dev
安装
// 这里直接执行make的操作
make
sudo make install
安装vimgdb runtime
cd ../vimgdb-for-vim7.3
cp vimgdb_runtime~/.vim/bundle
打开vim
:helptags ~/.vim/bundle/vimgdb_runtime/doc " 生成doc文件
添加配置.vimrc
" vimgdb插件
run macros/gdb_mappings.vim
在vim中执行gdb时,报 “Unable to read from GDB pseudo tty” 的错误,因为没有安装 gdb ,所以安装gdb
sudo apt-get install gdb
2、安装vundle
set up vundle
$ git clone~/.vim/bundle/vundle
Configure Plugins
在.vimrc文件的开头添加下面的内容,有些不是必须的 , 可以注掉
set nocompatible" be iMproved, required
filetype off" required
" set the runtime path to include Vundle and initialize
set rtp =~/.vim/bundle/vundle/
call vundle#rc()
" alternatively, pass a path where Vundle should install plugins
"let path = '~/some/path/here'
"call vundle#rc(path)
" let Vundle manage Vundle, required
Plugin 'gmarik/vundle'
" The following are examples of different formats supported.
" Keep Plugin commands between here and filetype plugin indent on.
" scripts on GitHub repos
Plugin 'tpope/vim-fugitive'
Plugin 'Lokaltog/vim-easymotion'
Plugin 'tpope/vim-rails.git'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" scripts from
Plugin 'L9'
Plugin 'FuzzyFinder'
" scripts not on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin ''
" ...
filetype plugin indent on" required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" : PluginList- list configured plugins
" : PluginInstall(!)- install (update) plugins
" : PluginSearch(!) foo - search (or refresh cache first) for foo
" : 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
Install Plugins
Launch vim and run
: PluginInstall
vimPluginInstallqall
3、官方vim-lang插件
Config vim file .vimrc,Add content bellow in bottom of the file
" 官方的插件
" 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 BufWritePreFmt
4、代码补全的插件gocode
配置go的环境变量,比如我的配置,GOPATH变量是必须要配置的,PATH中必须把GOPATH的bin也添加进去,否则没有自动提示,会提示找不到模式
export GOROOT=/usr/local/go
export GOPATH=/data/app/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Set up gocode
Then you need to get the appropriate version of the gocode, for 6g/8g/5g compiler you can do this:
go get -u github.com/nsf/gocode (-u flag for "update")
Configure vim in .vimrc file
Plugin 'nsf/gocode', {'rtp': 'vim/'}
Install Plugins
Launch vim and run
: PluginInstall
vimPluginInstallqall
写一个helloword程序,输入fmt后按C-xC-o如果能看到函数的声明展示出来,说明安装是正确的 。
4、代码跳转提示godef
Set up godef
go get -v code.google.com/p/rog-go/exp/cmd/godef
go install -v code.google.com/p/rog-go/exp/cmd/godef
git clone~/.vim/bundle/vim-godef
Configure vim in .vimrc file
Bundle 'dgryski/vim-godef'
Install Plugins
Launch vim and run
: PluginInstall
vimPluginInstallqall
5、代码结构提示gotags
Set up gotags
go get -u github.com/jstemmer/gotags
Put the following configuration in your vimrc:
Bundle 'majutsushi/tagbar'
nmap:TagbarToggle
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'
\ }
命令模式下按在右边就会显示当前文件下的函数名,结构体名等等,光标放到相应的tag上 , 按回车可以快速跳到程序中的相应位置 。
再次按会关闭tag窗口 。
PS:本地的.vimrc的配置
" 插件管理器 vundle
set nocompatible" be iMproved, required
filetype off" required
" set the runtime path to include Vundle and initialize
set rtp =~/.vim/bundle/vundle/
call vundle#rc()
" alternatively, pass a path where Vundle should install plugins
"let path = '~/some/path/here'
"call vundle#rc(path)
" let Vundle manage Vundle, required
Plugin 'gmarik/vundle'
" The following are examples of different formats supported.
" Keep Plugin commands between here and filetype plugin indent on.
" scripts on GitHub repos
" Plugin 'tpope/vim-fugitive'
" Plugin 'Lokaltog/vim-easymotion'
" Plugin 'tpope/vim-rails.git'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" scripts from
" Plugin 'L9'
" Plugin 'FuzzyFinder'
" scripts not on GitHub
" Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin ''
" ...
"
filetype plugin indent on" required
" To ignore plugin indent changes, instead use:
" filetype plugin on
"
" Brief help
" : PluginList- list configured plugins
" : PluginInstall(!) - install (update) plugins
" : PluginSearch(!) foo - search (or refresh cache first) for foo
" : 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
" ********************************************************************
" 这里省略了其它不相关的插件
" 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'
\ }
linux下怎么安装Go开发环境一、Go安装使用
1、下载Go源码包
上传到/usr/local/src目录下
2、编译安装Go到/usr/local
tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/
#注:必须使用root账户或者使用sudo来解压缩Go源码包
3、设置PATH环境变量go语言gtk开发环境,添加/usr/local/go/bin到环境变量
export PATH=$PATH:/usr/local/go/bin
4、安装到自定义位置
Go二进制文件默认安装到/usr/local/gogo语言gtk开发环境,但是可以安装Go工具到不同的位置,可以自行定义,只需要设置正确的环境变量 。
例如,安装Go到家目录下,必须添加环境变量到$HOME/.profile
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
注:安装Go到其他目录时 , GOROOT必须设置为环境变量
5、检查是否正确安装程序
通过设置一个工作区和建立一个简单的程序,检查是否正确安装了一个简单的程序 。创建一个目录包含您的工作空间,例如/data/work,并设置GOPATH环境变量指向的位置 。
export GOPATH=/data/work
#如果不存在/data/work,需要新建
然后,在你的工作内创建src/github.com/user/hello,如果使用github,可以使用自己的用户名代替user,在hello目录下,新建hello.go
# cat hello.go
package main
import "fmt"
func main {
fmt.Printf("hello,world!\n")
}
#使用go编译hello.go
go install github.com/user/hello
#上面的命令讲名叫hello(or hello.exe)的程序放到你的工作区内 , 执行下面命令 , 会得到输出结果 。
$GOPATH/bin/hello
hello,world!
#当出现hello,world!表明Go已经安装成功可以工作 。
二、Go工作区介绍
1、机构组织代码概述
Go语言程序通常将所有的代码保存在一个工作区中 。
工作区包含许多版本控制库(由Git管理) 。
每个存储库包含一个或多个包 。
每个包由一个或多个在一个目录中的源文件组成 。
一个包的目录的路径决定其导入路径 。
注:同于其他的编程环境中,每一个项目都有一个独立的工作区且工作区是紧密联系在一起的版本控制库 。
2、工作区介绍
工作区是一个目录层次结构,它的根目录有三个目录:
src 包含Go源文件
pkg包含对象和包
bin 包含可执行命令
Go工具创建源码包并安装二进制文件到pkg和bin目录下
src目录通常包含多个版本控制库(如Git或Mercurial),跟踪一个或多个源包的开发 。
下面展示一个好的工作区的例子:
bin/
hello# command executable
outyet# command executable
pkg/
linux_amd64/
github.com/golang/example/
stringutil.a# package object
src/
github.com/golang/example/
.git/# Git repository metadata
hello/
hello.go# command source
outyet/
main.go# command source
main_test.go# test source
stringutil/
reverse.go# package source
reverse_test.go# test source
golang.org/x/image/
.git/# Git repository metadata
bmp/
reader.go# package source
writer.go# package source
... (many more repositories and packages omitted) ...
上面的属性图展示了一个包含两个存储库(example和image)的工作区,example 存储库包含两个命令(hello,outyet),image库包含bmp包和几个其他的包 。
一个典型的工作区包含包含许多软件包和命令的多个源库 。大多数程序员将所有的源代码和依赖关系保存在一个工作区中
3、GOPATH环境变量设置
GOPATH环境变量指定工作区的位置 。它很可能是唯一的环境变量,代码开发时需要设置 。
开始,创建一个工作区目录并设置相应的gopath 。您的工作区可以位于任何你喜欢的地方,但我们将在这个文档中使用/data/work 。请注意,这不能是您的“Go安装”路径相同 。
mkdir -p /data/work
export GOPATH=/data/work
为了方便 。添加工作区的bin到PATH中
export PATH=$PATH:$GOPATH/bin
4、导入路径
一个导入路径是唯一标识一个包的字符串 。一个包的导入路径对应于它在工作区内或远程存储库中的位置 。
从标准库的软件包中给出了短的导入路径等 。对于您自己的包 , 您必须选择不可能和未来添加到标准库或其他外部库的基础路径冲突的路径 。
注意,你不需要将你的代码发布到一个远程存储库之前,你可以建立它 。这只是一个很好的习惯来组织你的代码,如果你有一天会出版它 。在实践中,你可以选择任何任意的路径名称,只要它是唯一的标准库和更大的去生态系统 。
我们将使用github.com/user作为我们的基本路径 。在您的工作区中创建一个目录,以保持源代码:
mkdir -p $GOPATH/src/github.com/user
5、第一个项目
编译并运行一个简单的程序,首先选择一个包的路径(我们将使用github.com/user/hello)和创建在您的工作区相应的软件包目录:
【go语言gtk开发环境 go语言开发界面】mkdir $GOPATH/src/github.com/user/hello
创建名叫hello.go的文件,上面创建过,此处略过 。
cd $GOPATH/src/github.com/user/hello
go install
$GOPATH/bin/hello
或者:
hello
如果你使用的是一个源代码管理系统,现在是一个很好的时间来初始化一个存储库,添加文件,并提交你的第一次更改 。再次,这一步是可选的:您不需要使用源代码管理来写代码 。
cd $GOPATH/src/github.com/user/hello
git init
Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/
git add hello.go
git commit -m "first commit"
[master (root-commit) bbfb477] first commit
6、first library
mkdir $GOPATH/src/github.com/user/stringutil
下一步,在目录下创建一个名为reverse.go文件中有下列内容:
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; ilen(r)/2; i, j = i 1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
使用go build测试包的编译
$ go build github.com/user/stringutil
如果当前位置源码包目录 , 只需要:
go build
上面操作并不会产生一个输出文件,必须使用go install,把包和对象输出到工作去的pkg目录内
确认stringutil包创建完成后,修改原始hello.go,使用stringutil包:
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))
}
无论使用go安装包还是二进制文件,所有相关的依赖都会自动安装 。所以当你安装hello程序时:
$ go install github.com/user/hello
对应的stringutil包会自动安装好 。
执行新的hello程序,可以看到消息已经被反转
# hello
Hello, Go!
完成上面操作之后,工作区应该为:
├── bin
│└── hello# command executable
├── pkg
│└── linux_amd64# this will reflect your OS and architecture
│└── github.com
│└── user
│└── stringutil.a# package object
└── src
└── github.com
└── user
├── hello
│└── hello.go# command source
└── stringutil
└── reverse.go# package source
注意:go install会把库文件stringutil.a放到pkg/linux_amd64下边(目录结构跟源代码结构一样) 。这样可以go命令可以直接找到对应的包对象,避免不必要的重复编译 。linux_amd64是为了根据操作系统和你的系统架构交叉编译 。
所有Go可执行程序都通过静态方式链接在一起,所以在运行时是不需要相关的包对象(库) 。
7、包命令
所有的Go源代码都以下面的语句开始:
package name
其中name就是包引用默认的名称,一个包中的所有文件必须使用同一个包名 , 可执行命令必须是main 。
一个二进制文件下所有的包名不需要唯一,但是引用路径必须唯一
8、测试
Go自带了一个轻量级的测试框架,由go test和testing包组成 。
可以通过新建xx_test.go写一个测试,其中包含若干个TestXXX函数 。测试框架会自动执行这些函数;如果函数中包含tError或t.Fail, 对应的测试会被判为失败 。
添加一个针对stringutil的测试文件$GOPATH/src/github.com/user/stringutil/reverse_test.go , 包含以下内容:
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
#通过go test测试
# go test github.com/user/stringutil
okgithub.com/user/stringutil0.002s
#同样的,在包文件夹下可以忽略路径而直接执行go test
[root@zabbix stringutil]# go test
PASS
okgithub.com/user/stringutil0.002s
9、远程包
包的引用路径用来描述如何通过版本控制系统获取包的源代码 。go工具通过引用路径自动从远程代码仓库获取包文件 。比如本文中用的例子也对应的保存在github.com/golang/example下 。go可以通过包的代码仓库的url直接获取、生成、安装对应的包 。
[root@zabbix ~]# go get github.com/golang/example/hello
[root@zabbix ~]# $GOPATH/bin/hello
Hello, Go examples!
如果工作区中不存在对应的包,go会将对应的包放到GOPATH环境变量指明的工作区下 。(如果包已经存在,go跳过代码拉去而直接执行go install)
建议详细看一下这个,有图文
关于go语言gtk开发环境和go语言开发界面的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读