我是 golang 和 gorm 框架的新手。這是我使用 gorm 獲取數據庫的代碼。數據庫Gopackage dbimport ( "fmt" "github.com/jinzhu/gorm" _ "github.com/lib/pq" "github.com/teamhide/hfive_go/users" "log")const ( DbHost = "localhost" DbPort = "5432" DbUser = "1" DbPassword = "1" DbName = "1")var db *gorm.DBvar err errorfunc Init() { db, err = gorm.Open( "postgres", fmt.Sprintf( "host=%s port=%s user=%s dbname=%s password=%s sslmode=disable", DbHost, DbPort, DbUser, DbName, DbPassword, ), ) if err != nil { log.Fatal(err.Error()) } db.AutoMigrate(&users.User{}) defer db.Close()}func GetDB() *gorm.DB { return db}用戶/usecase.gopackage usersimport ( "fmt" "github.com/teamhide/gin_boilerplate/db")type UserUsecase interface { RegisterUserUsecase(email, password1, password2 string) (bool, error)}func RegisterUserUsecase(email, password1, password2 string) (bool, error) { db := db.GetDB() fmt.Println(db) return true, nil}在用例中,如您所知,我只是打印了 db 變量來檢查它是否具有正確的數據庫數據。但是當我執行它時,它會拋出錯誤。...runtime error: invalid memory address or nil pointer dereference.../Users/hide/go/src/github.com/teamhide/hfive_go/users/controllers.go:18 (0x15b3301) UserController.RegisterDefaultUser: uc.RegisterUserUsecase(form.Email, form.Password1, form.Password2)...我的代碼有問題嗎?
1 回答

明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
堆棧跟蹤引用了controllers.go:18
您未在此處包含的文件。
功能有db.go
問題Init()
。函數完成后,您將關閉與數據庫的連接。另外,您似乎誤解了defer
關鍵字的行為,因為您在函數末尾使用了它。
- 1 回答
- 0 關注
- 230 瀏覽
添加回答
舉報
0/150
提交
取消