dongyue110702 2018-07-10 18:59
浏览 458
已采纳

golang错误:“未定义(类型字符串没有字段或方法)”

i use this library golang.org/x/crypto/bcrypt to hash password and compare hash with password but I having problem see below:

main.go file

package main

import (
        "./hash"
)

func main() {
        password := "passwd"
        hash := "hhhhhhhhaaaaaaaaaassssssssssshhhhhhhhhhh"

        check := hash.CheckPasswordHash(password, hash)
}

hash/hash.go file

package hash

import "golang.org/x/crypto/bcrypt"

func HashPassword(password string) (string, error) {
        bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)

        return string(bytes), err
}

func CheckPasswordHash(password, hash string) bool {
        err := bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))

        return err == nil
}

if you run this:

$ go run main.go

It will show this error:

./main.go:11:15: hash.CheckPasswordHash undefined (type string has no field or method CheckPasswordHash)

why this error?

  • 写回答

2条回答 默认 最新

  • duancan65665 2018-07-10 19:11
    关注

    In main, your variable name hash contains a long string. So it shadows the package name hash. You should rename one or the other.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 我下载图形界面重启完就变成这样了,打字也打不了,动也动不了,该怎么解决(操作系统-centos)
  • ¥15 VBA中在窗体中遍历所有checkbox控件,提取出被选中的checkbox的caption值
  • ¥15 在Ubuntu上有什么命令,或者是系统文件能告诉我链接nvme ssd的pcie槽位是不是支持热插拔功能?
  • ¥15 ansys license许可证问题
  • ¥20 QQ号和密码都能正常登录微信 QQ号和密码登录微信显示密码错误
  • ¥15 qiankun主应用注册子应用提示跨域
  • ¥15 单片机RTOS Kernel与应用分离开发,Kernel如何调起应用?
  • ¥15 快手小店商家版APP怎么第三方APP跳转到指定用户聊天界面
  • ¥15 为什么AVL fire软件仿真时的步长改变了,仿真结果也会改变
  • ¥100 如何帮我写一个java小游戏