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?

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

In main.go file Change hash variable to other name (Do not use variable with the same package name)

thanks "Adrian"