作为一个测试,作为一个测试开发, 全栈化◆管理 是我们未来的发展方向.已经掌握了Java、Python、HTML的你,是不是也想了解下最近异常火爆的Go语言呢?来吧,让我们一起了解下.
Go 是一个开源的编程语言 ,它能让构造简单、可靠且高效的软件变得容易.
此时此刻呢说说 Go语言的特色 :
简洁、快速、安全
并行、有趣、开源
内存管理、数组安全、编译迅速
Go语言的用途 :
Go 语言被设计成一门应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器的系统编程语言.
对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率.它提供了海量并行的支持,这对于 游戏 服务端的开发而言是再好不过了.
Go语言的环境安装:
建议直接打开 官方地址因为墙的原因打不开
因为我用的是windows系统,这里主要讲下Windows系统上使用Go语言来编程.
默认情况下 .msi 文件会安装在 c:Go 目录下.你可以将 c:Gobin 目录添加到 Path 环境变量中.添加后你需要重启命令窗口才能生效.个人建议还是安装到 Program Files文件夹中.
使用什么开发工具来对Go语言进行编写:
建议参考网页:
解决vscode中golang插件安装失败方法
在学习go的过程中,使用的是vscode,但是一直提示安装相关插件失败,然后上网查方法,基本上是叫你建立golang.org目录什么的,结果全是错的,而且都是抄袭,很烦.无意之中看到一位博主分享的方法,他也是饱受上述的垃圾博文困扰,然后找到了解决方法,这里向他致敬,秉着让更多人看到正确解决方法的心,我写下正确的解决方法,希望对你有所帮助,也可以点开原博主链接参考:
Go有一个全球模块代理,设置代理再去安装golang的插件,就可以安装成功了.步骤有,首先Windows用户打开Powershell,一个蓝色的界面,注意不是cmd!不知道的直接打开window下面的搜索,然后输入powershell,搜索出来就可以了.
$env:GO111MODULE="on"
$env:GOPROXY=""
go env -w GOPROXY=
go env -w GOPRIVATE=*.corp.example.com
然后我们打开VsCode界面,下面会提示安装插件,我们选择Install ALL,就会安装成功
当你在运行Go语言程序时,提示所有的插件包都已经安装成功了时,就可以正常使用了,要不然一堆报错会让你非常心烦.
好了,今天先到这里,晚安、下班~
开始安装
一路下一步就行了,没什么需要设置的,安装目录最好保持默认,避免遇到一些怪问题.
安装完成之后就可以打开命令行,看看安装成功了没有;
任意目录下,直接执行"go",能看到类似以下内容就对了:
或者执行:
[plain] view plain copy
C:\go?version
注意:我在安装完成之后执行"go"的时候就提示找不到文件或目录,我打开环境变量,在用户变量里加了一个PATH,
检查系统变量"PATH"中也有"C:\Go\bin",然后就在后面加了一个分号,确定保存之后再打开命令行就可以了,也不知道到底是哪个起作用了.
①1 Go 安装
Go的三种安装方式
Go有多种安装方式,你可以选择自己喜欢的.这里我们介绍三种最常见的安装方式:
Go源码安装:这是一种标准的软件安装方式.对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码安装可以自己定制.
第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等.这种安装方式适合那些熟悉相应系统的用户.
最后,如果你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GVM,这是目前在这方面做得最好的工具,除非你知道怎么处理.
Go源码安装
在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具.
在类Unix系统中,需要安装gcc等工具.例如Ubuntu系统可通过在终端中执行sudo apt-get install gcc
在Windows系统中,你需要安装MinGW,然后通过MinGW安装gcc,并设置相应的环境变量.
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 PATH=$PATH:$GOROOT/bin:$GOPATH/bin
上面这些命令对于Mac和Unix用户来说最好是写入.bashrc或者.zshrc文件,对于windows用户来说当然是写入环境变量.
我们此时此刻呢的Go安装需要判断操作系统的位数,所以这小节我们先确定自己的系统类型.
Linux系统用户可通过在Terminal中执行命令arch(即uname
-m)来查看系统信息:
Mac 安装
看到类似上面源码安装成功的图片说明已经安装成功
如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录.
Linux 安装
假定你想要安装Go的目录为 $GO_INSTALL_DIR,后面替换为相应的目录路径.
$GO_INSTALL_DIR.
设置PATH,export PATH=$PATH:$GO_INSTALL_DIR/go/bin
然后执行go
Windows 安装
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了:
执行完上面的命令之后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,为了以后方便,应该把
brew update brew upgrade
brew install go
brew install git
brew install mercurial
举例:我的机器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安装路径;
F:\workspace\goSample01是我写的go语言项目的工程目录;
F:\workspace\goSample01\bin是go语言项目的工程目录下的可执行文件路径;
注意:这个基本环境不包含开发工具,也不能直接编译带C代码的go程序.
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
为了编译该a.go文件,需要启动Console.bat,然后在该命令行窗口,进入c:\go\src目录下,执行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
配置goclipse(可选)
(如果不喜欢eclipse开发工具,请跳过这个配置.)
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可选)
如果不需要go语法辅助和eclipse里面的(按ALT◆/)弹出go语言自动辅助功能,请跳过这个配置.
从开发工具这块看,go语言还不够成熟,开发工具都还不完善,有待改进.
Google有个在线运行go语言的教程(),很不错.支持在web上直接运行大部分的go程序,想了解这个教程的源代码的朋友可以通过以下方式获取.如果没兴趣,可以跳过这个步骤.
第一段:Go安装使用
上传到/usr/local/src目录下
#注:必须使用root账户或者使用sudo来解压缩Go源码包
export PATH=$PATH:/usr/local/go/bin
Go二进制文件默认安装到/usr/local/go,但是可以安装Go工具到不同的位置,可以自行定义,只需要设置正确的环境变量.
例如,安装Go到家目录下,必须添加环境变量到$HOME/.profile
export PATH=$PATH:$GOROOT/bin
注:安装Go到其他目录时,GOROOT必须设置为环境变量
通过设置一个工作区和建立一个简单的程序,检查是否正确安装了一个简单的程序.创建一个目录包含您的工作空间,例如/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工作区介绍
①.、机构组织代码概述
Go语言程序通常将所有的代码保存在一个工作区中.
工作区包含许多版本控制库(由Git管理).
每个存储库包含一个或多个包.
每个包由一个或多个在一个目录中的源文件组成.
一个包的目录的路径决定其导入路径.
注:同于其他的编程环境中,每一个项目都有一个独立的工作区且工作区是紧密联系在一起的版本控制库.
工作区是一个目录层次结构,它的根目录有三个目录:
src 包含Go源文件
pkg 包含对象和包
bin 包含可执行命令
Go工具创建源码包并安装二进制文件到pkg和bin目录下
src目录通常包含多个版本控制库(如Git或Mercurial),跟踪一个或多个源包的开发.
下面展示一个好的工作区的例子:
bin/
hello # command executable
outyet # command executable
pkg/
github.com/golang/example/
stringutil.a # package object
src/
.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/
bmp/
reader.go # package source
writer.go # package source
... (many more repositories and packages omitted) ...
上面的属性图展示了一个包含两个存储库(example和image)的工作区,example 存储库包含两个命令(hello,outyet),image库包含bmp包和几个其他的包.
一个典型的工作区包含包含许多软件包和命令的多个源库.大多数程序员将所有的源代码和依赖关系保存在一个工作区中
GOPATH环境变量指定工作区的位置.它很可能是唯一的环境变量,代码开发时需要设置.
开始,创建一个工作区目录并设置相应的gopath.您的工作区可以位于任何你喜欢的地方,但我们将在这个文档中使用/data/work.请注意,这不能是您的"Go安装"路径相同.
mkdir -p /data/work
为了方便.添加工作区的bin到PATH中
export PATH=$PATH:$GOPATH/bin
一个导入路径是唯一标识一个包的字符串.一个包的导入路径对应于它在工作区内或远程存储库中的位置.
从标准库的软件包中给出了短的导入路径等.对于您自己的包,您必须选择不可能和未来添加到标准库或其他外部库的基础路径冲突的路径.
注意,你不需要将你的代码发布到一个远程存储库之前,你可以建立它.这只是一个很好的习惯来组织你的代码,如果你有一天会出版它.在实践中,你可以选择任何任意的路径名称,只要它是唯一的标准库和更大的去生态系统.
我们将使用github.com/user作为我们的基本路径.在您的工作区中创建一个目录,以保持源代码:
mkdir -p $GOPATH/src/github.com/user
编译并运行一个简单的程序,首先选择一个包的路径(我们将使用github.com/user/hello)和创建在您的工作区相应的软件包目录:
mkdir $GOPATH/src/github.com/user/hello
创建名叫hello.go的文件,上面创建过,此处略过.
cd $GOPATH/src/github.com/user/hello
go install
或者:
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"
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)
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包:
import (
"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
│ └── github.com
│ └── user
│ └── stringutil.a # package object
└── src
└── github.com
└── user
├── hello
│ └── hello.go # command source
└── stringutil
└── reverse.go # package source
所有Go可执行程序都通过静态方式链接在一起,所以在运行时是不需要相关的包对象(库).
所有的Go源代码都以下面的语句开始:
package name
其中name就是包引用默认的名称,一个包中的所有文件必须使用同一个包名,可执行命令必须是main.
一个二进制文件下所有的包名不需要唯一,但是引用路径必须唯一
Go自带了一个轻量级的测试框架,由go test和testing包组成.
可以通过新建xx_test.go写一个测试,其中包含若干个TestXXX函数.测试框架会自动执行这些函数;如果函数中包含tError或t.Fail, 对应的测试会被判为失败.
添加一个针对stringutil的测试文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下内容:
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
#同样的,在包文件夹下可以忽略路径而直接执行go test
PASS
包的引用路径用来描述如何通过版本控制系统获取包的源代码.go工具通过引用路径自动从远程代码仓库获取包文件.比如本文中用的例子也对应的保存在github.com/golang/example下.go可以通过包的代码仓库的url直接获取、生成、安装对应的包.
Hello, Go examples!
如果工作区中不存在对应的包,go会将对应的包放到GOPATH环境变量指明的工作区下.(如果包已经存在,go跳过代码拉去而直接执行go install)
建议详细看一下这个,有图文
顾名思义首先是安装Go,这里有很详细的安装说明, 或者(golang.org自己去找hosts),官方已经支持Windows版本
(1). 新建 变量名:GOBIN 变量值 :c:\go\bin
破解:
破解注册成功
同上输入GoSublime选择GoSublime回车
本机已经安装所以没有出现选项,输入Go build选中回车(这个属于可选)
到此GoSublime安装成功
打开控制台,输入以下内容:
go get github.com/nsf/gocode
go install github.com/nsf/gocode
go get github.com/DisposaBoy/MarGo
go install github.com/DisposaBoy/MarGo
安装完成后,我们可以在 go/bin 目录下,发现多出了个 gocode 文件.(一定要放在bin目录下)
"env": {"path":"c:/go/bin;" },
好了,到目前为止,开发环境搭建完成.
下面可以自由编程了.呵呵.
按下快捷键 Ctrl ◆ b 界面下方会出现如下界面:
好了,到现在,开发环境就搭建完毕了.
如下是内容我这边没有使用照样可以使用:
tools-build system-new build system 新建一个配置文件 设置为
{
"cmd": ["go", "run", "$file_name"],
"working_dir": "$file_path",
"selector": "source.go"
然后就可以用ctrl◆b 编译了
保存