Golang初体验

The first day with Golang

Based on official document

安装与配置

安装官网下就行,需要配置PATH

配合vscode,国内有些东西下不了,需要配置go proxy

具体环境见go env ,主要的几个,均通过.bashrc修改:

  • GO111MODULE —> on
  • GOPATH —> 具体go的环境,里面有下载的各种库和工具,主要文件夹包括src, bin, pkg,顾名思义即可
  • GOPROXY —> proxy, suggest GOPROXY="https://goproxy.io,direct"

配好proxy后开vscode装go插件,基本的工具都会自动推荐下载

代码框架

主要是理解module和package。可以参考这篇文章

package

package可以理解为包,用于管理源代码。main包即为程序入口。

package必须在一个文件夹内,且一个文件夹内也只能有一个package,但一个文件夹内可以有多个文件。

module

module是基本的模块的单位,可以通过go get(类似于git clone)从网上拉取,也可以使用本地的module

在一个文件夹下,首先要go mod init ur-website.com/mod-name,在该文件夹下会出现一个go.mod文件记录module信息;在其他文件夹调用这个包时,要在import中注明这个module。

  • 对于本地包,使用命令进行重定向:go mod edit -replace=ur-website.com/mod-name=/path/to/target/module.

之后使用git mod tidy来拉取该包或在本地寻找这个包

之后go.mod文件大概长这个样子:

1
2
3
4
5
6
7
8
module example.com/hello

go 1.16
// 本地拉取的有replace,在require中有后面的‘伪版本号’;已发布的module会像最后一行
replace example.com/greetings => ../greetings

require example.com/greetings v0.0.0-00010101000000-000000000000
require example.com/greetings v1.1.0

单元测试

测试文件一般以targename_test.go命名,go可以识别其中以Test开头的func。执行时使用go test [-v](v—verbose)即可。

测试函数以TestName命名,Name就是具体测试的内容。一般带有参数(t *testing.T),需要import testing包。函数需要考虑理想情况的输出,进行比对,将不符合预期的结果通过参数f输出。

build/install

go build可以在本地对于main包生成可执行文件(可以指定生成不同平台、不同架构的文件),go install将可执行文件放到GOBIN下,如果把这个加到path里就可以全局执行了。

还要补充的

还有几个东西,比如函数定义方式func name(arg type) rettype|(multi, return, type){}没有c的先声明后使用的要求,注意只有首字母大写的函数才能被别的mod使用

比如:=语法糖、error handler、log和slice、数组、map等数据结构和for、if格式等到时候再在语法的部分写

还有make等内存分配方式

TODO list

除了语法,还有几个部分

writing web application

effective go