Go 为什么变量是nil,尽管我在那个里放了对object的引用
我不明白为什么调用ConnectToMongo后变量session仍然是nil。如果ConnectToMongo接受的不是像ConnectToMongosession mgo.Session这样的引用类型,而是返回函数ConnectToMongo后必须保存引用变量类型*mgo.Session,我会理解的 它输出: 零。为什么? 使现代化 相同的输出:Go 为什么变量是nil,尽管我在那个里放了对object的引用,go,mgo,Go,Mgo,我不明白为什么调用ConnectToMongo后变量session仍然是nil。如果ConnectToMongo接受的不是像ConnectToMongosession mgo.Session这样的引用类型,而是返回函数ConnectToMongo后必须保存引用变量类型*mgo.Session,我会理解的 它输出: 零。为什么? 使现代化 相同的输出: nil. Why? 您需要将指针传递给指针以存储指针的值。否则,您将复制指向ConnectToMongo函数的指针值 package main
nil. Why?
您需要将指针传递给指针以存储指针的值。否则,您将复制指向ConnectToMongo函数的指针值
package main
import (
"fmt"
"gopkg.in/mgo.v2"
)
func ConnectToMongo(session **mgo.Session) {
if *session == nil {
var err error
*session, err = mgo.Dial("localhost:27028")
if err != nil {
panic(err)
}
}
}
func main() {
var session *mgo.Session
ConnectToMongo(&session)
if session == nil {
fmt.Println("nil. Why?")
}
}
谢谢,但输出相同:无。为什么?以前的代码中有一个错误。如果*session==nil,请注意*。固定的
nil. Why?
package main
import (
"fmt"
"gopkg.in/mgo.v2"
)
func ConnectToMongo(session **mgo.Session) {
if *session == nil {
var err error
*session, err = mgo.Dial("localhost:27028")
if err != nil {
panic(err)
}
}
}
func main() {
var session *mgo.Session
ConnectToMongo(&session)
if session == nil {
fmt.Println("nil. Why?")
}
}