Я не могу понять, почему после вызова ConnectToMongo
переменная session
по-прежнему равна нулю. Я бы понял, если ConnectToMongo
принимает не ссылаться на тип как ConnectToMongo(session mgo.Session)
но ссылаться на переменную типа *mgo.Session
должны быть сохранены после возвращения функции 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?")
}
}
Он выводит:
nil. Why?
Update
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?")
} else {
fmt.Println("not nil. Ok.")
}
}
Тот же выход:
nil. Why?
Спасибо, но тот же выход: 'nil. Почему? ' –
произошла ошибка в предыдущем коде. 'if * session == nil' отметить' * '. Исправлена. – fabrizioM