返回顶部
首页 > 资讯 > 后端开发 > GO >取消引用无效的内存地址或 nil 指针
  • 170
分享到

取消引用无效的内存地址或 nil 指针

2024-04-04 23:04:23 170人浏览 薄情痞子
摘要

积累知识,胜过积蓄金银!毕竟在golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《取消引用无效的内存地址或 nil

积累知识,胜过积蓄金银!毕竟在golang开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《取消引用无效的内存地址或 nil 指针》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我是 Golang 和 gORM 框架的新手。

这是我使用 gorm 获取数据库的代码。

db.go

package db

import (
    "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.db
var err error

func 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
}

users/usecase.go

package users

import (
    "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
}

在用例中,如您所知,我只是打印了数据库变量来检查它是否具有正确的数据库数据。

但是当我执行它时,它会抛出错误。

...
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)
...

我的代码有问题吗?

谢谢。


解决方案


堆栈跟踪引用文件 controllers.go:18,您未在此处包含该文件。

db.goInit() 函数中存在问题。函数完成后,您将关闭与数据库的连接。另外,您似乎误解了 defer 关键字的行为,因为您在函数末尾使用了它。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~

您可能感兴趣的文档:

--结束END--

本文标题: 取消引用无效的内存地址或 nil 指针

本文链接: https://lsjlt.com/news/595879.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作