6月
15
利用air(git)实现 go 项目的热重启。安装完 air 后,运行 air 出现 zsh: command not found: air 报错。air 是安装在 gopath 的 bin 目录下,终端找不到这个文件。
解决方法
vim ~/.zshrc
# 在末尾追加下边语句,保存
alias air='$(go env GOPATH)/bin/air'
# source 使得配置生效
source ~/.zshrc
再运行 air 发现就可以了。如果不行,是终端对应的配置文件不是这个。
__ _ ___
/ /\ | | | |_)
/_/--\ |_| |_| \_ , built with Go
可是,如果又安装了一个呢。是不是又得再加。这样好麻烦。把 GOPATH BIN 目录加入到环境变量中就可以了的。
vim ~/.zshrc
# 加入下边的,保存
export PATH="$(go env GOPATH)/bin:$PATH"
# source 使得配置生效
source ~/.zshrc
6月
02
12月
29
在一个项目中,环境变量,配置文件这些都是一个很重要的环节。设计好了,体验也会不一般。在 go 中,使用 viper 来构造一个这样的配置环境。
https://github.com/spf13/viper
开始之前
- 在开始之前,我们已经熟悉了 laravel 的配置文件的方式。这里,我们仿照 laravel 的结构方式来组织我们的代码。使用 .env 文件来放置重要配置信息。当然也有 .env.example 。.env 不会加入版本控制中,.env.example 加入版本控制中。
-
go 的 init 函数。相关联文件中, init 函数总是会先执行的。init 函数要慎用,仔细用。导入顺序也很有关系。
-
一个项目中 MVC 是指的是业务逻辑的代码,而除了支撑业务逻辑代码以外,还有底层的辅助代码。例如路由加载、数据库初始化等。在我们的项目中,遵循 Go 社区的惯例,这些底层代码我们会归类为各自的包,并放置于 pkg 目录下。pkg 目录下的包,我们会尽量保持其独立性,这样方便在其他项目中复用。但是最重要的,当前还是以服务 goblog 项目为主。
继续阅读
12月
28
快速 mac go 开发环境
go version
go env
# 表示使用 go modules 模式
go env -w GO111MODULE=on
# 开启代理,方便下载包
go env -w GOPROXY=https://goproxy.cn,direct
- 下载 goland 虽然 vscode,atom 等也可以用。可还是 goland 好用。下载破解版吧。
http://www.520xiazai.com/soft/GoLand-2020-for-mac.html
12月
18
11月
26
习惯了 Laravel 的迁移和 seeder,来使用 go 语言。如果没有这些,是不是很不爽。好的就需要模仿和借鉴,当然,有现成省心的更好。网上已经有一些这样的轮子了,这里找一个比较接近 Laravel 的迁移的实现。
github: https://github.com/praveen001/go-db-migration
origin:https://techinscribed.com/create-db-migrations-tool-in-go-from-scratch/
learnku: https://learnku.com/go/t/51228
操作一波
先上个图,证明这个是可以玩起来的,并且和 laravel 中的操作很相似。
第一步: 先建立一个 migrations/migrator.go 文件,这个文件用来执行初始化,创建迁移,执行迁移的直接逻辑。
继续阅读
11月
26
之前说过 request 和 response。但是,没具体设计结构。作为接口开发,定义和 response 结构,对前端或 c 端而言,是很重要的。
操作一波
先定义错误 code 和 message
# app/response/errors.go
package response
type Error struct {
code int
message string
}
var (
OK = Error{0, "ok"}
SYSTEM_ERROR = Error{100000, "系统错误"}
PARAMS_ERROR = Error{100001, "参数错误"}
ACCOUNT_PASSWORD_ERROR = Error{100020, "账号密码错误"}
)
因为常量不支持结构体对象,只能用 var 了。在使用的地方直接用 response.SYSTEM_ERROR 这样就可以返回一个 Error 对象了。
继续阅读
11月
25
对于一个请求,通常总是会有反馈的。请求是 request,反馈是 response。 这个是基础。
request
官网: https://docs.iris-go.com/iris/requests/url-query
headers
bind: https://docs.iris-go.com/iris/requests/headers
app.Get("/", handler)
func handler(ctx iris.Context) {
requestID := ctx.GetHeader("X-Request-Id")
authentication := ctx.GetHeader("Authentication")
}
继续阅读
11月
24
了解了 iris 相关的路由,中间件,mvc 后,尝试手动从零开始构造一个完整的项目架构。当然,还有很多问题还没开始研究,比如数据库,ORM, Response 等。那也不妨碍前边的部分。
操作一波
先构造空项目
# 项目放在 favor 文件夹下
mkdir favor
cd favor
go mod init
git init
git add .
git commit -m 'go initialize'
这样就这样,初始化了一个 go 项目。到此,一个真正的 go 文件都没有。后边开始创建。
继续阅读