Go再入门

框架

微服务框架

开发工具

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函数用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。

依赖管理常用工具

  • godep
  • vender
  • gopkg.in 能够帮助开发人员发布自己的包的多个版本
  • gb 全新的构建工具。最好的一个特点“不需要重写导入路径”。但gb工程与Go官方工具链(包括go get)并不兼容。了解更多gb特性请访问 getgb.io ——《Go语言实战》

缺点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值