我有一個數據庫會話變量的結構。我應該在哪裏設置/調用延遲 - 就像構造函數/析構函數一樣?在哪裏設置推遲結構(析構函數)變量
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