Go语言入门及技术指南

目录

环境安装


        Go语言

Go语言介绍-Goland等 http://c.biancheng.net/view/6124.html

Go by Example 中文: https://books.studygolang.com/gobyexample/

Golang标准库文档:  https://studygolang.com/pkgdoc

 

goland使用go mod模式的步骤详解 http://www.45fan.com/article.php?aid=1u9TsjcXfu4Gl0Yc

Go-解决低版本Goland调试问题:Version of Delve is too old for this version... https://blog.csdn.net/lady_killer9/article/details/116396555?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

环境安装概述

安装包有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

参考https://blog.csdn.net/Deronn/article/details/108362982

可能需要重启IDE环境

Windows
打开你的 PowerShell 并执行:

C:> $env:GOPROXY = "https://goproxy.cn,direct"

安装第三方依赖包,如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了。 

编辑

快捷键参考 https://www.coder55.com/article/36023

打包编译

以打包名称为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会忽略GOPATH和vendor文件夹,只会根据go.mod加载依赖。

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

 

Gitee代码同步

参考:https://blog.csdn.net/tacity/article/details/108831828

同步的目录键入:

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 "[email protected]"

查看git配置

> git remote -v

下载代码

> git pull origin master

选是,下载

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

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

//全量同步

> git add .

//给这次上传做个备注

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

//将本地代码推到远程

> git push origin master

 

Gin框架

介绍

Gin 是一个 golang 的微框架,封装比较优雅, API 友好,源码注释比较明确,具有快速灵活,容错方便等特点;
对于 golang 而言, web 框架的依赖要远比 Python Java 之类的要小。自身的 net/http 足够简单,性能也非常不错
借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。
 
 

Guess you like

Origin blog.csdn.net/yan_dk/article/details/110557155