在哪里设置延迟结构(析构函数)变量

时间:2015-12-03 11:27:03

标签: go

我有一个带有数据库会话变量的结构。我应该在哪里设置/调用延迟 - 比如构造函数/析构函数?

type MyType struct {
    session    *gocql.Session
}

我附加了一个* gocql.Session的实例,它应该和struct一样长。

func (this *myType) function_one_using_the_session(){}
func (this *myType) function_two_using_the_session(){}

我找到了thisruntime.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
}

1 个答案:

答案 0 :(得分:1)

您可以使用上下文来设置您的处理程序以设置Cassandra会话,使用它并在之后释放,然后将其返回到您的会话池。

查看有关如何组织对数据库服务的访问权限的to this blog post