我有一个数据库会话变量的结构。我应该在哪里设置/调用延迟 - 就像构造函数/析构函数一样?在哪里设置推迟结构(析构函数)变量
type MyType struct {
session *gocql.Session
}
我附加了* gocql.Session的一个实例,它应该与结构一样长。
func (this *myType) function_one_using_the_session(){}
func (this *myType) function_two_using_the_session(){}
我发现this:runtime.SetFinalizer(a, func(a *Test) { fmt.Println("I AM DEAD") })
我可能会做,或写我自己的Close()
功能。
这可能会诀窍 - 欢迎其他意见?
我想只使用这么多会话。但我应该推迟以下功能会话:
func GetSession() *gocql.Session {
if cluster == nil {
cluster = gocql.NewCluster("ip")
cluster.Keyspace = "Keyspace"
session, _ = cluster.CreateSession()
return session
} else {
session, _ = cluster.CreateSession()
// defer session.Close()
}
return session
}
“set/call defer”是什么意思?这没有多大意义。也许这个链接可以为你澄清一些事情:https://blog.golang.org/defer-panic-and-recover – HectorJ
你能描述一下你到底想要达到什么吗 – MIkCode
不要使用'SetFinalizer',因为它会关闭你的会议在不可预知的时间,或者它可能永远不会关闭你的会话。从文档中可以看出:'典型的使用场景是让一个全局会话对象与整个Cassandra集群进行交互。' – JimB