目录

        Go语言

 

环境安装概述

安装包有windows、linux两种版本,如下是安装包截图:

注意配置变量中$GOROOT、$GOPATH的区分,他们可以是同一目录,很多情况是不同路径

$GOROOT是系统环境的初始路径,用于操作系统编译go的基本环境,一般是比较干净的官方包程序目录,最好不要轻易修改 ;

$GOPATH是应用环境的路径,用于存储应用环境及第三方包的扩展环境

windows环境安装go

 

windows安装包安装后,最好指定安装目录为d盘,当前安装目录为d:\go,安装完成后,系统默认可以直接运行go env,查看环境安装目录,其中GOPATH路径可以设置环境变量,如下:

说明go环境已成功安装。

简单编写并运行一个go程序的hello world,代码如下

package main
import "fmt"
func main() {
fmt.Println("hello go 2012")
var i string
fmt.Scan(&i)
fmt.Println("获取到的内容", i)
}

运行命令为:go run xx/main.go, 如下:

linux环境安装go

# wget https://dl.google.com/go/go1.16.1.linux-amd64.tar.gz

# tar -C /usr/local -zxvf  go1.16.1.linux-amd64.tar.gz

vim /etc/profile
// 在最后一行添加
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
// wq保存退出后source一下
source /etc/profile

查看版本

# go version

安装git

 windows下直接下载git安装不再说明

linux安装如下:

# yum -y install git

# git --version

依赖包的下载安装

下载go的依赖包包时会失败,需要调整参数,可能的做法如下:

查看环境

# go env

修改代理环境参数

 # go env -w GOPROXY=https://goproxy.cn,direct

可能需要重启IDE环境

Windows
打开你的 PowerShell 并执行:

安装第三方依赖包,如gorm

# go get -u gorm.io/gorm

我们查找这个依赖包放在哪里

 发现放到了/root/go/pkg/mod下,默认的下载依赖包就放在这里

我们在看看go环境参数,就明白了

我们如果在windows下开发,可以把这个包复制到开发的包目录中去(windows下处理被墙可能失败,我们就通过linux下载再复制过去)

go语言注意点

包的使用

1. 点操作   有时候会看到如下的方式导入包     import( . “fmt” ) 
这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello world”)  可以省略的写成Println(“hello world”)
2. 别名操作   别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字
       import( f “fmt” )   别名操作调用包函数时前缀变成了重命名的前缀,即f.Println(“hello world”)
3.  _操作   这个操作经常是让很多人费解的一个操作符,请看下面这个import
     import ( “database/sql” _ “github.com/ziutek/mymysql/godrv” ) 

点操作包

package main
import (. "fmt")
func main() {
Println("直接调用当前包函数")
}

_操作包

package main
import (
"fmt"
_ "yunyan/test/models"
)
func init(){
fmt.Println("_操作 初始化init方法")
}
func main(){
fmt.Println("_操作调用包")
}

空值操作符_

nums := []int{2, 3, 4}
sum := 0
for _, num := range nums {
sum += num
}
fmt.Println("sum:", sum)

函数的特殊用法

1. 函数使用结构体申明成员方法:这个类似于java中对象中再定义成员对象,并声明该对象的成员方法,写法比较简洁,用()括起结构体指针对象继续申明方法,如下

申明结构体

定义结构体成员方法

 

IDE开发工具

推荐使用JetBrains GoLand 

配置编译环境

建议开启go mod方式,打开Files->Settings...

1. 启用Go modules方式后,project Go path就不用存了,否则可能会报错“$GOPATH/go.mod exists but should not“,因为使用Go moduels方式托管了,2种共存会有冲突。

2. 运行或测试执行时,go编译器会自动下载本模块依赖包,只要goroot、gopath、goproxy设置正确,就能正常运行任何一个go程序,这个在新手入门时需要注意的。

搭建debug环境(dlv)

下载dlv

 运行完成后,发现{Gopath}/bin下多了dlv.exe

设置dlv环境变量 

 

运行调试

 > dlv debug

这样,我们就可以用命令行方式调试go了。 

编辑

打包编译

以打包名称为test1为例,在项目路径下执行如下:

linux端

# set GOOS=linux
# set GOARCH=amd64
# go build -o test1 .

 windows端

> set GOOS=windows (这步也可以省略)
> go build -o test1.exe .

单元测试

注意几点:

1)测试文件为*_test.go;

2)测试方法名为Test+测试函数名

范例:

dao.go中包含如下方法

package model
...
func readData(name, string,data map[string]Model) error{
...
}

model_test.go 

package model
import "testing"
func TestReadData(t *testing.T) {
userDatas := make(map[string]Model,0)
readData("user","username",userDatas)
}

运行测试

 > go test -v

遇到问题

1. 运行测试时报错“go: cannot find main module; see 'go help modules'”

GO111MODULE=on

> go mod init {模块名},运行此命令后解决

 

Gitee代码同步

同步的目录键入:

git初始化

> git init
指定远程地址为:https://gitee.com/xxxxx

> git remote add origin https://gitee.com/xxxxx
指定git的账号

> git config --global user.name "Your Name"
指定git的邮箱

>  git config --global user.email "you@example.com"

查看git配置

> git remote -v

下载代码

> git pull origin master

选是,下载

继续安装成功后,应当弹窗登录

登录验证成功后开始自动下载。

//全量同步

> git add .

//给这次上传做个备注

> git commit -m "备注的内容"

//将本地代码推到远程

> git push origin master

 

Gin框架

介绍