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

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

报告相同问题?