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

时间:2018-07-10 18:59:02

标签: go hash

我使用这个库golang.org/x/crypto/bcrypt来哈希密码并将哈希与密码进行比较,但是我在下面看到了问题:

main.go文件

package main

import (
        "./hash"
)

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

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

hash / hash.go文件

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
}

如果运行此命令:

$ go run main.go

它将显示此错误:

  

./ main.go:11:15:hash.CheckPasswordHash未定义(类型字符串没有   字段或方法CheckPasswordHash)

为什么会出现此错误?

2 个答案:

答案 0 :(得分:3)

main中,变量名hash包含一个长字符串。因此,它遮盖了程序包名称hash。您应该重命名一个。

答案 1 :(得分:0)

在main.go文件中,将哈希变量更改为其他名称(请勿使用具有相同程序包名称的变量)

感谢“艾德里安”