[Go]一、Go环境配置和初试Go命令

目录

1、Linux平台安装Go

2、Windows平台安装Go

3、IDE安装(Linux平台Vim配置)

3.1、可能会出现的错误

3.2、Vim IDE常用功能 

4、Windows平台Goland安装

5、测试工具安装

6、第一个Go程序

6.1、运行代码

7、Go常用命令

7.1、go build

7.1.1、可能出现的错误

7.2、go run

7.3、go install

7.4、go get

7.5、 go fmt

7.6、go tool

8、Go语言fmt包的用法

8.1、Print,输出函数

8.2、九个打印函数

8.3、Scan,输入函数


1、Linux平台安装Go

1)安装Go的安装包

$ 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/

2)设置环境变量

~/.bashrc 中添加 GOPATH 变量
# 安装目录 
export GOROOT=/usr/local/go
# 代码目录 
export GOPATH=~/code export 
PATH=$PATH:$GOPATH:$GOROOT/bin
添加完后, source ~/.bashrc
3)检查  
$ go version 
go version go1.18.3 linux/amd64
# 看到这个就说明安装成功了

2、Windows平台安装Go

  • 下载:
    • 下载路径:https://golang.google.cn/dl/go1.18.3.windows-amd64.msi
  • 安装msi文件
  • 将安装路径添加到环境变量 :
    • 如:go安装到 C:\Program Files\Go 目录(这里你可以自定义选择安装路径),则添加环境变量GOPATH: C:\Program Files\Go\ 并将 %GOPATH%\bin 添加到PATH

 

系统默认生成了GOPATH的情况,就新建一个GOROOT(安装路径);默认生成的GOPATH改为你想要存的代码目录。

  • 检查
    • 打开cmd命令行,输入: go version。若是结果如下图所示,那么就表示安装成功了

3、IDE安装(Linux平台Vim配置)

Vim Linux 下开发的最基本工具,可以配置一个 Vim IDE 。我们可以使用开源的安装工具,这里直接用该工具实现一键配置,具体配置步骤如下。
 
1、下载Vim配置工具
git clone https://github.com/lexkong/lexVim

2、进入 lexVim 目录,下载 go ide 需要的二进制文件

$ cd lexVim 
$ git clone https://github.com/lexkong/vim-go-ide-bin
# 都是二进制文件,大概有 141MB,请耐心等待 :-)

3、启动安装脚本

$ ./start_vim.sh

####启动后,会进入一个交互环境,依次输入: 1 -> yourname -> youremail@qq.com ,脚本最后输出this vim config is success ! 说明安装成功。很简单,只需 3 个选择即可安装成功。

启动成功的画面就是这个啦,然后你就按照前面的步骤操作,就会得到安装成功的英文。

3.1、可能会出现的错误

错误一:

这个时候只需要输入"chmod +x start_vim.sh"这个命令,然后再执行图中这个命令就能够执行成功了。或者咱们可以使用"bash start_vim.sh"的执行方式。

错误二:

出现这个问题的可能原因是因为我们直接从windows里拿去这个文件的安装包导致的。所以我们需要安装dos2unix来解决问题。

$ yum install dos2unix -y
$ dos2unix start_vim.sh

再运行用dos2unix转化之后的文件,那么就会得到上面的结果。

3.2、Vim IDE常用功能 

在Go项目开发中最常用的功能是(!!必会!!):

  • gd 或者 ctrl + ] 跳转到对应的函数定义处 => 如果没有反应请等待一下,可能慢
  • ctrl + o 跳转到前一个位置
  • <F1> 打开帮助, :q 退出
  • <F2> 打开目录窗口,再按会关闭目录窗口
  • <F4> 最近文件列表, :q 退出
  • <F6> 添加函数注释

其他:

  • <F3> 展示tag,再按会关闭tag窗口
  • <F5> Vim 的上面打开文件查找窗口, :q 退出
  • ctrl + t 标签退栈
  • <F9> 生成供函数跳转的 tag
在代码间跳来跳去,将光标放在某个函数调用上,按 ctl + ] 就会跳到函数的定义处,按 ctrl + o 就会跳回来。
退出某模式的窗口,使用末行模式 :q 即可
注意:在 vim 中粘贴文本,需要 :set paste 就能正常粘贴好了!
更多 Go vim ide 功能请参考 Vim IDE 功能。

4、Windows平台Goland安装

下载地址: https://www.jetbrains.com/go/

5、测试工具安装

安装curl

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

6、第一个Go程序

新建一个文件 ~/code/example.go ,写入

[root@fttswlp src]#  cat example.go 
// 声明该文件所在包,如果是主程序就是main
package main

// 导入库,fmt用来处理标准输入和输出
import "fmt"

// main函数是整个程序的入口,main函数所在的包名也必须为"main"
func main() {
	fmt.Println("hello world!")
}

解读这个程序:

package main

声明了 main.go 所在的包, Go 语言中使用包来组织代码。一般一个文件夹即一个包,包内可以暴露类型或方法供其他包使用。
import "fmt"
fmt Go 语言的一个标准库 / 包,用来处理标准输入输出。

详细用法:标准库-fmt库的用法

func main​​​​​​

main 函数是整个程序的入口, main 函数所在的包名也必须为 main
!!主包中必须包含一个 main 函数!!
fmt.Println(“Hello World!”)
调用 fmt 包的 Println 方法,打印出 “Hello World!”
其他知识点:
  • 一行代表一个语句结束,多个语句写在同一行,它们则必须使用 ; 人为区分
  • 注释:
    • 单行注释: //
    • 多行注释:/* sth */
  • 标识符:同python标识符规则

6.1、运行代码

直接运行

// 执行代码
[root@fttswlp src]# go run example.go 
hello world!
// 如果强制启用了 Go Modules 机制,即环境变量中设置了 GO111MODULE=on,则需要先初始化模块 go mod init hello 否则会报错误:go: cannot find main module; see ‘go help modules’

先编译再执行

#先编译成二进制可执行程序,build后,你会发现在同目录下会生成一个同名的可执行文件(无扩展名)
[root@fttswlp src]#  go build example.go

# 执行该程序
[root@fttswlp src]# ./example 
hello world!

7、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 command [arguments]

7.1、go build

go build ,它可以启动编译,把我们的包和相关的依赖编译成 一个可执行的文件 。 如果是main 包,执行 go build 之后,会在当前目录下生成一个可执行文件
// 编译当前目录为一个可执行文件 
go build 
// 编译当前目录为一个可执行文件 
go build . 
// 编译hello.go文件为一个可执行文件 
go build hello.go

$ go build example.go 
$ ./example 
Hello World!

7.1.1、可能出现的错误

/usr/lib/go-1.10/pkg/tool/linux_amd64/link: running gcc failed: exit status 1 
/tmp/go-link-008006128/000026.o: In function _cgo_05dc84caff82_Cfunc_sysconf': 
/tmp/go-build/cgo-gcc-prolog:32: multiple definition of_cgo_05dc84caff82_Cfunc_sysconf’ 
/tmp/go-link-008006128/000024.o:/tmp/go-build/cgo-gcc-prolog:32: first defined here collect2: error: ld returned 1 exit status

解决办法

linux: export CGO_ENABLED=0 
windows : cmd: set CGO_ENABLED=0 
windows : powershell:$env:CGO_ENABLED=0

7.2、go run

go build 是先编译,然后我们在执行可以执行文件来运行我们的程序,需要两步。

go run 这个命令就是可以把这两步合成一步的命令,节省了我们录入的时间

命令格式:

go run 文件名.go

示例: 

$ go run example.go 
Hello World!

7.3、go install

go install 命令和 go build 类似,用来生成项目的可执行文件。不过它可以在编译后,把生成的执行文件或者库安装到对应的目录下,以供使用。

  • 可执行文件安装到: $GOPATH/bin/
  • 可引用库安装到: $GOPATH/pkg/
  • 注意: 没有开启go mod时,使用上述命令需要配置GOPATH,否则会报:no install location

7.4、go get

go get用来获取远程仓库中的包,使用该命令前必须配置GOPATH,而且依据不同的源码网站,还要安装不同的版本管理工具,比如从github上使用go get需要额外安装git

go get本质上可以理解为通过源码工具clone下代码后,执行了go install

  • 命令格式:
    • 下载包:添加 -u 参数可以自动更新包和依赖
go get github.com/**/**
  • 使用安装的包
import "github.com/****/****"
  • 如果下载慢,记得配置goproxy
# 设置module管理模式 
$ go env -w GO111MODULE=on 
# 设置下载源 
$ go env -w GOPROXY=https://goproxy.cn

7.5、 go fmt

go fmt命令可以格式化代码文件

使用go fmt命令,其实是调用了gofmt,而且需要参数-w,否则格式化结果不会写入文件

  • 命令格式
go fmt -w 文件名.go
  • 示例:格式化整个项目
gofmt -w -l src
  • 常见参数
-l: 显示那些需要格式化的文件 
-w: 把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。 
-r: 添加形如"a[b:len(a)] -> a[b:]"的重写规则,方便我们做批量替换 
-s: 简化文件中的代码 
-d: 显示格式化前后的diff而不是写入文件,默认是false 
-e: 打印语法错误到标准输出。无此参数只会打印不同行的前10个错误。

7.6、go tool

go tool下聚集了很多命令,主要有2个,即fifixvet

go tool fix .:用来修复以前老版本的代码到新版本 
go tool vet directory|files:分析当前目录的代码是否正确

8、Go语言fmt包的用法

介绍:

fmt是一个用于输入输出常用的库,更多方法可以参考:官方网站

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

8.1、Print,输出函数

print 系列主要用于输出,主要包含三个方法:
  • print :直接输出内容, 不会换行 ,不能格式化输出。
  • printf: 按照指定格式化文本输出内容。
  • println:能够在输出内容后面 加上换行符
[root@fttswlp src]# go run b.go 
hello Println
helloPrintlnHello Printf AAA

[root@fttswlp src]# cat b.go 
package main

import "fmt"

func main() {
    // 一次性输入多个值的时候,Printlt中间有空格,能自动换行
	fmt.Println("hello","Println")
	// 一次性输入多个值的时候,Print中没有空格,Print不会自动换行
	fmt.Print("hello","Println")
	//  Printf 是格式化输出,在很多场景下比 Println 更方便,Printf也不会换行
	fmt.Printf("Hello Printf %s", "AAA")
}

8.2、九个打印函数

9个函数,按照两个维度功能可以按两个维度来划分

  • 如果把 Print 理解为核心关键字,那么后面跟的后缀有" f "" ln "以及"",着重的是输出内容的最终结果;如果后缀是" f ", 则指定了format 如果后缀是" ln ", 则有换行符
Println、Fprintln、Sprintln 输出内容时会加上换行符; 
Print、Fprint、Sprint 输出内容时不加上换行符; 
Printf、Fprintf、Sprintf 按照指定格式化文本输出内容。
  • 如果把 Print 理解为核心关键字,那么前面的前缀有 " F " " S " 以及 "" ,着重的是输出内容的目标(终端);如果前缀是" F ", 则指定了 io.Writer 如果前缀是 " S ", 则是输出到字符串
Print、Printf、Println 输出内容到标准输出os.Stdout; 
Fprint、Fprintf、Fprintln 输出内容到指定的io.Writer; 
Sprint、Sprintf、Sprintln 输出内容到字符串。

8.3、Scan,输入函数

scan系列主要用于输入 ,例在交互式界面中获取用户输入

[root@fttswlp src]# cat scan.go 
package main

import "fmt"

func main() {
	var name string
	fmt.Print("输入你的姓名:")
	fmt.Scan(&name)
	fmt.Printf("你输入的姓名是:%s", name)
	fmt.Println()
}

[root@fttswlp src]# go run scan.go 
输入你的姓名:fyy   
你输入的姓名是:fyy
# 值得注意的是,Scan后面需要使用&,否则会被视为直接传参进去

9、Go多版本与包管理

Go的三种包管理

 

补充:go module模式下,代码除了不能放在code目录下面,其他的任意目录都可以存放

RESTful API介绍

RESTful RUI的设计

HTTP动词

对于资源的具体操作类型,由HTTP动词表示。

常见的HTTP动词有以下四个(括号里是对应的SQL命令)

还有三个不常用的HTTP动词

 示例

过滤信息

状态码

服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词) 

较重要的一些信号:2开头的也很重要,401、403 、404

返回结果以及错误处理(Error handling)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FanMY_71

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值