框架
微服务框架
开发工具
Visual Studio Code
Mac快捷键
按键 | 功能 |
---|---|
F5 | 执行 |
⌃~ | 终端切换 |
⌘W | 关闭窗口 |
⌘X | 剪切整行 (不需要选中) |
⌘C | 复制整行 (不需要选中) |
⇧⌘K | 删除行 |
⇧⌘\ | 光标跳到对应的括号 |
⌘] / ⌘[ | 缩进 |
⌘← / ⌘→ | 光标移动到首/尾 |
⌘↑ / ⌘↓ | 跳到首行或尾行 |
⌘F | 查找 |
⌥⌘F | 替换 |
⌘G / ⇧⌘G | 查找下一个或上一个 |
⌥Enter | 选择所有的查找结果 |
⌘D | 依次选择所有的查找结果 |
⌃G | 去到指定行 |
⌘P | 快速打开文件 |
⇧⌘O | 跳到某个函数 |
⇧⌘M | 显示报错面板 |
F8 / ⇧F8 | 跳到下一个/前一个错误或警告 |
⌃⇧Tab | 导航所有打开的文件(在已打开的文件中切换) |
⌃- / ⌃⇧- | 最近查看的文件之间跳转 |
⌥⌘S | 保存所有文件 |
⌘+ / ⌘- | 字体变大/小 |
⌘B | 关闭/打开左侧面板 |
settings.json
{
"http.proxy": "http://127.0.0.1:51624",
// 查看函数实现时在新窗口中打开
"workbench.editor.enablePreview": false,
// 延迟自动保存
"files.autoSave": "afterDelay",
// 延迟3秒自动保存
"files.autoSaveDelay": 3000,
"team.showWelcomeMessage": false
}
异常解决
- cannot find package
cannot find package "github.com/goinaction/code/chapter2/sample/search" in any of:
/usr/local/go/src/github.com/goinaction/code/chapter2/sample/search (from $GOROOT)
/Users/aoe/go/src/github.com/goinaction/code/chapter2/sample/search (from $GOPATH)go
修改为相对路径
import (
_ "./matchers"
"./search"
"../search"
)
入门书
《Go语言实战》
Go命令
查看全部环境变量
go env
查看系统包文档
# 例如查看fmt的文档
godoc fmt
go build 生成二进制文件。
- 在不包含文件名时,go工具默认使用当前目录来编译
go build
- 也可以直接指定包
go build github.com/aoeai/code/tools/wordcount
- 也可在指定包的时候使用通配符。3个点表示匹配所有的字符串。例如下面的命令会编译tools目录下的所有包
go build github.com/aoeai/code/tools/...
- 除了指定包,大部分Go命令使用短路径作为参数。例如,下面2条命令的效果相同
go build wordcount.go
go build .
程序编译时,会使用声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名——《Go语言实战》
go run
go run wordcount.go
构建后执行(不生成可执行文件)
go get
go get将获取任意指定的URL的包,或者一个已经导入的包所依赖的其他包。由于go get的这种递归特性,这个命令会扫描某个包的源码树,获取能找到的所有依赖包。——《Go语言实战》
go 可以查看很多基础命令
go vet
帮助开发人员检测代码的常见错误
每次对代码先执行go vet再将其签入源代码库是一个很好的习惯
go fmt 代码格式化
go doc 语言的文档
- 在终端查看文档
go doc http
- 浏览文档
# 启动自己的文档服务器
godoc -http=:6060
启动后浏览器访问http://localhost:6060/
- 搜索golang documentation来查找更多关于如果给代码创建一个好文档的内容。
- 使用 https://godoc.org/ 阅读开源包的文档
开发规约
目录命名
给包及其目录命名时,应该使用简洁、清晰且全小写的名字,这有利于开发时频繁输入包名。——《Go语言实战》
导入多个包
导入多个包,习惯上是将import语句包装在一个导入块中,例:
import (
"fmt"
"strings"
)
编译器会使用Go环境变量设置的路径,通过引入的相对路径来查找磁盘上的包:
⭐️标准库中的包会在安装Go的位置找到。
⭐️Go开发者创建的包会在GOPATH环境变量指定的目录里查找。GOPATH指定的这些目录就是开发者的个人工作空间。
例:
Go安装在/usr/local/go
环境变量GOPATH为/home/myproject:/home/mylibraries
编译器会按下面的顺序查找net/http包
/usr/local/go/src/pkg/net/http
/home/myproject/src/pkg/net/http
/home/mylibraries/src/pkg/net/http
一旦编译器找到一个满足import语句的包,就停止进一步查找。
⭐️编译器会首先查找Go的安装目录,然后才会按顺序查找GOPATH变量里列出的目录。
如果编译器查遍GOPATH也没找到要导入的包,那么在试图对程序执行run或者build的时候就会出错。可以通过go get命令来修正这种错误。 ——《Go语言实战》
命名导入
如果要导入的包,具有相同的名字,在import语句给出的包路径的左侧定义一个名字,将导入的包命名为新名字。——《Go语言实战》
package main
import(
"fmt"
myfmt "mylib/fmt"
)
func main(){
fmt.Println("标准类库")
myfmt.Println("自定义类库")
}
空白标识符,下划线字符_
这个标识符用来抛弃不想继续使用的值
⭐️给导入的包赋一个空名字
⭐️忽略函数返回的你不感兴趣的值 ——《Go语言实战》
函数init
每个包可以包含任意多个init函数,这些函数都会在程序执行开始的时候被调用。所有被编译器发现的init函数都会安排在main函数之前执行。init函数用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。