go语言编码时的一些小技巧
Easul Lv6

格式

导入包前有一个下划线_

折叠代码块GO 复制代码
1
2
3
4
5
6
7
import (
"database/sql"

// 在Go语言中,使用下划线来导入一个包表示仅希望执行该包中的init函数,而不需要使用该包中的任何其他功能或符号。这通常在导入数据库驱动程序或其他需要在应用程序启动时进行初始化的包时很有用。
// 在上述代码中,_ "github.com/mattn/go-sqlite3"表示我们希望将github.com/mattn/go-sqlite3包导入到应用程序中,并执行其init函数。但是,我们不需要在代码中显式地使用该包中的任何其他功能或符号,因此我们使用下划线来忽略导入该包的警告。
_ "github.com/mattn/go-sqlite3"
)

格式转换

未知类型 转 int64

折叠代码块GOLANG 复制代码
1
mainTypeId := (*_accountType[0].(*interface{})).(int64)

接口实现思路

折叠代码块GOLANG 复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// MessageHandlerInterface是接口,GroupMessageHandler是实现该接口的结构体
// 这个也就表示用GroupMessageHandler来实现了MessageHandlerInterface接口
// 不写倒也没错
var _ MessageHandlerInterface = (*GroupMessageHandler)(nil)

type HandlerType string
const (
GroupHandler HandlerType = "group"
UserHandler HandlerType = "user"
)
type GroupMessageHandler struct {
}
func NewGroupMessageHandler() MessageHandlerInterface {
return &GroupMessageHandler{}
}
func (g *GroupMessageHandler) handle(msg *openwechat.Message) error {
if msg.IsText() {
return g.ReplyText(msg)
}
return nil
}

// 创建一个接口,里边放两个方法
type MessageHandlerInterface interface {
handle(*openwechat.Message) error
ReplyText(*openwechat.Message) error
}
// 然后创建一个map,值是接口
var handlers map[HandlerType]MessageHandlerInterface
// 然后实例化map,在里边放键值
handlers = make(map[HandlerType]MessageHandlerInterface)
// 因为值返回了结构体,结构体挂载在了方法上,所以可以直接调用方法
handlers[GroupHandler] = NewGroupMessageHandler()
handlers[GroupHandler].handle(msg)
 评论
来发评论吧~
Powered By Valine
v1.5.2