目录
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框架