阿小信大人的头像
Where there is a Python, there is a way. 阿小信大人

Golang变量作用域踩坑记录2018-10-26 11:14

这是一篇记录实际应用中遇到的变量作用域问题,golang的学习资料中很多都提到过这个知识点,但是实际使用中还是不小心就忽略掉坑里了。

背景:打算封装一个gorm的初始化连接db的操作放在一个包里,通过调用这个初始化函数为包里面的全局变量`var DB *gorm.DB` 赋值来作为操作db的句柄

错误写法:

:::golang

var DB *gorm.DB

func InitGormDB(engine, addr, name, username, password string) {

var dsn string

......
#Golang#   评论[0]阅读全文[523]

Golang web框架选型2018-10-17 18:16

老板说要选一个go的web框架来用,所以记录一下选择理由。

go本身就具备了web开发的特性,`net/http`包+httprouter开发一个apiserver已经足够了,写好包含`http.ResponseWriter`和`*http.Request`参数的业务处理函数,通过`http.HandleFunc`注册路由就可以了。

当前流行的框架:结合github关键字`go web` `go web framework`搜索和`awesome-go`中提及的框架,选出了当前比较start数较多且最近一直在更新的框架

按start数排名:gin 21.2k、beego 17

......
#Golang#   评论[0]阅读全文[1068]

使用Go定义一个可以调用任意回调函数的函数2018-10-15 11:49

原始需求是这样的:我需要监听一个json文件是否发生变化,一旦发生变化就重新调用函数读取文件中新的json来更新一个变量。

现在的需求是想把这种监听到某个事件自动就调用一个函数来处理的通用写法,Golang新手,很多写法都受到Python的影响,想到封装一个能调用通用的回调函数的函数,类似于 OnFileChange(whichFile, callback),当第一个参数指定的文件发生变化时调用第二个参数传入的函数来处理这个事件。直觉上觉得go还可以有其他方式来优雅实现这种需求。

这个函数支持传入一个回调函数作为参数,回调函数的参数不确定,返回值不确定,只能把参数和返回值都定义为i

......
#Golang#   评论[0]阅读全文[504]