2 votes

Erreur avec golang "undefined (type string has no field or method)"

J'utilise cette bibliothèque golang.org/x/crypto/bcrypt pour hacher le mot de passe et comparer le hachage avec le mot de passe, mais j'ai un problème, voir ci-dessous :

fichier main.go

package main

import (
        "./hash"
)

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

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

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

si vous l'exécutez :

$ go run main.go

Il affichera cette erreur :

./main.go:11:15 : hash.CheckPasswordHash undefined (type string has no champ ou méthode CheckPasswordHash)

pourquoi cette erreur ?

4voto

Michael Hampton Points 3441

En main , votre nom de variable hash contient une longue chaîne de caractères. Ainsi, le nom du paquet est ombré hash . Vous devriez renommer l'un ou l'autre.

0voto

lab0 Points 119

Dans le fichier main.go, remplacez la variable hash par un autre nom (n'utilisez pas de variable portant le même nom de paquet).

merci "Adrian"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X