当前位置:网站首页>Golang(1)|从环境准备到快速上手

Golang(1)|从环境准备到快速上手

2022-07-05 21:04:00 小朱撕码迹


前言

本专栏将零基础教大家如何来实现一个采用 REST 风格+JSON构建的 API 服务器,这是 Go API 开发中很常用的组合,这种模式能满足绝大多数的需求场景。通过实战展示了 API 构建过程中各个流程(准备 -> 设计 -> 开发 -> 测试
[可选] -> 部署)的实现方法。

大纲展示

在这里插入图片描述


GO语言的基本介绍

Go语言的特点

Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发速度和易维护性,有人形容Go语言: Go = C + Python , 说明Go语言既有C静态语言程序的运行速度,又能达到Python动态语言的快速开发。Go语言有以下
特性:

  • 自动垃圾回收: C/C++最头疼的就是指针问题,一不小心就野指针了或者又越界了。在Go语言里再也不用担心,也不用考虑delete或 者free,系统自动会回收
  • 函数可以返回多个值: 这个很神奇,大多数语言只能返回一个值,Go语言可以返回多个值。这个功能使得开发者再不用绞尽脑汁的想到底怎么返回值的设计,也不用为了传值专门定义一个结构体。
  • 并发编程: Go语言天然并发,只需要关键字“go”就可以让函数并发执行,使得并发编程变得更为简单,这也是Go语言最大的优势。
  • 没有依赖地狱, 甚至是glibc
  • 编译一次,随处拷贝,部署极为方便: 不用像python项目一样要安装所需要的依赖,GO项目的部署简便、快捷!

GO语言开发环境配置


Go的安装

Go 有多种安装方式,如:Go 源码安装、Go 标准包安装、第三方工具(yum、apt-get 等)安装

两个环境变量的介绍:
GOROOT:GOROOT 就是 Go 的安装路径
GOPATH:GOPATH 是作为编译后二进制的存放目的地 和 import 包的搜索路径(其实也是你的工作目录,存放GO文件的路径

GOPATH详解

go_code // (例go_code为GOPATH目录) 
-- bin // golang编译可执行文件存放路径,可自动生成。 
-- pkg // golang编译的*.a中间文件存放路径,可自动生成。 
-- src // go源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即在此路 径下执行上述命令)

Linux下安装GO

  1. 获取安装压缩包
$ yum install wget -y
$ wget https://golang.google.cn/dl/go1.18.3.linux-amd64.tar.gz 
$ tar -xzvf go1.18.3.linux-amd64.tar.gz 
$ mv go /usr/local/
  1. 设置环境变量

~/.bashrc 中添加 GOPATH 变量

# 安装目录 
export GOROOT=/usr/local/go 
# 代码目录 
export GOPATH=~/code 
export PATH=$PATH:$GOPATH:$GOROOT/bin

# 注意:如果之前安装过想选用最新版本
export PATH=$PATH:$GOROOT/bin:$GOPATH

添加完成后,保存文件,并执行 source ~/.bashrc

  1. 测试是否安装成功
$ go version 
go version go1.18.3 linux/amd64

看到 go version 命令输出 go 版本号 go1.10.2 linux/amd64 ,说明 go 命令安装成功。

Mac平台安装GO

$ brew install go 
$ go version 
go version go1.18.3 darwin/amd64

Windows平台安装GO

  • 下载
    下载路径:https://golang.google.cn/dl/go1.18.3.windows-amd64.msi

  • 安装msi文件

  • 将安装路径添加到环境变量中

如:go安装到 D:\GO_APP
添加环境变量GOPATH (代码存放目录)==》D:\GO_code
添加环境变量GOROOT(软件安装目录) ==》 D:\GO_APP
并添加 %GOPATH%\bin 到PATH
并添加 %GOROOT%\bin 到PATH

  • 查看是否安装成功
    打开 cmd 命令行,输入 go version

IDE的安装

Linux平台Vim配置: Vim 是 Linux 下开发的最基本工具,可以配置一个 Vim IDE。我们可以使用开源的安装工具,这里直接用该工具实现一键配置,具体配置步骤如下:

  1. 下载Vim配置工具
$ yum install git -y  #安装软件等最好进入/tmp下进行安装
$ git clone https://github.com/lexkong/lexVim
  1. 进入lexVim目录,下载 go ide 需要的二进制文件
$ cd lexVim 
$ git clone https://github.com/lexkong/vim-go-ide-bin

都是二进制文件,文件比较大,请耐心等待!

  1. 启动安装脚本
$ ./start_vim.sh

启动后,会进入一个交互环境,依次输入: 1 ==> 用户名 ==》 邮箱(可以任意输入)。脚本最后输出 this vim config is success ! 说明安装成功。很简单,只需 3 个选择即可安装成功,配置 IDE so easy。


如果安装包下载过慢,可私信找我要压缩包哦

## 解压zip压缩包

# 安装zip
yum install unzip -y

# 解压zip文件
unzip start_vim.sh

## 遇到Windows上的文件在Linux上运行出现格式报错
[[email protected] lexVim]# sh start_vim.sh
start_vim.sh:行9: $'\r': 未找到命令
start_vim.sh:行11: $'\r': 未找到命令
start_vim.sh:行12: 未预期的符号 `$'\r'' 附近有语法错误 'tart_vim.sh:行12: `function prompt() 

#解决办法
yum install dos2unix

#转换
dos2unix start_vim.sh

Vim IDE常用功能

  • 跳转到源代码:ctrl+] 或 gd
  • 跳出源代码:ctrl+o
  • 跳转到末尾:shift+G
  • 删除全部:d+gg
  • 删除一行:d
  • < F1> 打开帮助, :q 退出
  • < F2> 打开目录窗口,再按会关闭目录窗口
  • < F4> 最近文件列表, :q 退出
  • < F6> 添加函数注释
  • 在vim中粘贴文本,需要 :set paste 就能正常粘贴

测试工具安装

Linux平台Curl工具

$ yum install curl

使用方法:
https://www.ruanyifeng.com/blog/2011/09/curl.html
https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

Windows平台 APIPOST安装

下载地址:https://www.apipost.cn/?utm_source=10039&bd_vid=10756414022759907776


GO语言快速上手

  1. 创建一个 .go 的文件
// 声明该文件所在包,如果是主程序就是main 
package main 
// 导入库,fmt用来处理标准输入输出 
import "fmt" 
// main 函数是整个程序的入口,main 函数所在的包名也必须为`main` 
func main() {
     
// 调用fmt包的Println方法,在屏幕输出信息
fmt.Println("Hello World!") 
}

注意:
单行注释: //
多行注释:/* sth */

  1. 运行代码
    直接运行
$ go run first.go
Hello World!

先编译在执行

$ go build first.go
$ ./first   
  1. GO语言的配置

Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令(译注:静态编译)

# 设置module管理模式 
$ go env -w GO111MODULE=on
# 设置下载源 
$ go env -w GOPROXY=https://goproxy.cn  

## 中国最可靠的 Go 模块代理:https://goproxy.cn

#修改env
## echo "export GOPROXY=https://goproxy.cn" >> ~/.profile && source ~/.profile

尝试部署GO项目

  1. 编写代码
package main

import (
	"fmt"
	"github.com/jinzhu/configor"
)

func main() {
    
	fmt.Println("vim-go",configor.Config{
    })
}
  1. 初始化项目:主要解决包管理依赖问题
# 初始化 
go mod init account 
# 解决依赖问题(检查,删除错误或者不使用的modules,下载没download的package) 
go mod tidy
  1. 运行
# go run proj.go 
vim-go {
     false false false false 0s <nil> false}

GO语言多版本与包管理

go module

GOMODULE 模式下:

  • 所有依赖的包存放在 GOPATH/pkg/mod 目录下
  • 所有第三方二进制可执行文件放在 GOPATH/bin 目录下
  • 工程项目可以放在 GOPATH 路径之外
  • 要求项目中需要有 go.mod 文件(该文件通过 go mod init 命令初始化可以生成)

GOMODULE 模式和 GOPATH 模式一样都指定了依赖包存放的位置,区别在于GOMODULE的 go.mod 文件中记录了所依赖包的具体版本,既实现了工程之间重用依赖包,且解决了 GOPATH 模式下不同工程无法依赖同一个包的不同版本的
问题

1.使用GO MODULE模式,需要先开启配置

$ export GO111MODULE=on 
或
$ go env -w GO111MODULE=on

注意:开启模块支持后,并不能与GOPATH共存,所以项目不能放在GOPATH目录下!!

在这里插入图片描述
关于 GO111MODULE 有兴趣的可以参考这篇文章:文章链接

go mod 命令的使用

在这里插入图片描述

# 初始化工作目录 -> 生成go.mod文件 
$ go mod init code 
$ go mod tidy 
# 下载gin,下载到pkg目录 
$ go get github.com/gin-gonic/gin

常用命令

在这里插入图片描述

$ go get   golang.org/x/tools/cmd/guru
$ go build golang.org/x/tools/cmd/guru
$ mv guru $(go env GOROOT)/bin

标准库-fmt库

fmt是一个用于输入输出常用的库,可以参考官网:GO中文官网

在 fmt 包,有关格式化输入输出的方法就两大类: Scan (输入函数)和 Print (输出函数),分别在scan.go 和 print.go 文件中


GO语言常用管理命令

  • go version: 获取Go版本
  • go env: 查看Go环境变量
  • go help: 查看Go帮助命令
  • go get: 获取远程包(需提前安装git或hg)
  • go build: 编译并生成可执行程序
  • go run: 直接运行程序
  • go fmt: 格式化源码
  • go install: 编译包文件以及整个程序
  • go test: go原生提供的单元测试命令
  • go clean: 移除当前源码包和关联源码包里编译生成的文件
  • go tool: 升级Go版本时,修复旧版代码
  • godoc -http:80:开启一个本地80端口的web文档
  • gdb 可执行程序名:调试Go编译出来的文件

GO语言常见报错汇总

遇到Windows上的文件在Linux上运行出现格式报错

[[email protected] lexVim]# sh start_vim.sh
start_vim.sh:行9: $'\r': 未找到命令
start_vim.sh:行11: $'\r': 未找到命令
start_vim.sh:行12: 未预期的符号 `$'\r'' 附近有语法错误 'tart_vim.sh:行12: `function prompt() 

#下载工具
yum install dos2unix

#转换
dos2unix zjh.sh


#添加可执行权限
chmod -x 文件名
./文件名  #可以执行了(不要后缀)

获取GO包时报错

[[email protected] code]# go get golang.org/x/tools/cmd/guru
go: go.mod file not found in current directory or any parent directory.
	'go get' is no longer supported outside a module.
	To build and install a command, use 'go install' with a version,
	like 'go install example.com/[email protected]'
	For more information, see https://golang.org/doc/go-get-install-deprecation
	or run 'go help get' or 'go help install'.


## 解决方法
go mod init mycode  #把目录初始化mod模式的目录

环境变量GOPROXY的修改(主要解决下载过慢的问题)

echo "export GOPROXY=https://goproxy.cn" >> ~/.profile && source ~/.profile

# https://goproxy.cn 是中国最可靠的 Go 模块代理

执行 go mod tidy 时报错

出现go mod tidy报"all" matched no packages原因为go.mod和执行go mod tidy目录不在一个目录

[[email protected] proj01]# go mod tidy #帮我安装所用到的依赖包
go: warning: "all" matched no packages

导入了包就要使用,不使用就会报错!!

[[email protected] proj01]# go run proj.go
# command-line-arguments
./proj.go:6:2: imported and not used: "github.com/gin-gonic/gin"

输入 ctrl+] 无法跳转到源代码

$ go get   golang.org/x/tools/cmd/guru
$ go build golang.org/x/tools/cmd/guru
$ mv guru $(go env GOROOT)/bin
原网站

版权声明
本文为[小朱撕码迹]所创,转载请带上原文链接,感谢
https://blog.csdn.net/sc_jizhi/article/details/125588414