Maison >développement back-end >Golang >Peut-être que c'est un sac en golang (tapez la chaîne et la chaîne ne correspondent pas)

Peut-être que c'est un sac en golang (tapez la chaîne et la chaîne ne correspondent pas)

WBOY
WBOYavant
2024-02-09 08:06:18430parcourir

也许是 golang 中的 bag(类型字符串和字符串不匹配)

L'éditeur PHP Xinyi vous présente les types de sacs en golang. En golang, le type bag fait référence à une structure de données utilisée pour stocker une collection d'éléments. Contrairement à d’autres structures de données, les éléments d’un sac peuvent apparaître de manière répétée et l’ordre n’a pas d’importance. Cela signifie que le type de sac est très utile dans les situations où l'ordre n'est pas requis, comme pour calculer la fréquence des éléments ou déterminer si un élément existe. Il convient de noter que le type de sac et le type de chaîne ne correspondent pas dans Golang, vous devez donc faire attention aux problèmes de conversion de type lors de l'utilisation.

Contenu de la question

Ne me demandez pas pourquoi je fais ça, dites-moi simplement comment c'est possible :

Erreur gopls : incompatibilité de chaîne et de type de chaîne

type mapsi2[t string | int | float32 | float64] struct {
    keys   []string
    values []t
}

func (mapsi mapsi2[string]) setvalue(key string, value string) {
    for i, keymapsi := range mapsi.keys {
        if key == keymapsi {
            mapsi.values[i] = value
        }
    }
}

Au début, je pensais que le serveur lsp était stupide, mais il s'est avéré que ce n'était pas le cas.

Une erreur s'est produite : incompatibilité de chaîne et de type de chaîne

go run ./cmd/app
# devllart/foobarman/src/mapsi
src/mapsi/mapsi.go:48:13: invalid operation: key == keyMapsi (mismatched types string and string)
make: *** [Makefile:6: run] Error 2

J'ai cherché sur Google et dans les résultats de recherche, j'ai eu une erreur uniquement lors de la comparaison des pointeurs avec des chaînes... Juste là, tapez tout va bien, ou je me trompe.

Solution de contournement

La signature de votre méthode devrait être func (mapsi Mapsi2[T]) SetValue(key string, value T).

Ce n'est pas lié à votre problème de compilation, mais veuillez noter :

  • Vous souhaiterez peut-être utiliser un récepteur de pointeur pour que les modifications persistent au-delà des appels de méthode
  • Vous souhaiterez peut-être également gérer le cas où la clé n'est pas trouvée

Vue sur l'aire de jeux : https://www.php.cn/link/6934456f54af5ab56c6f347c6427afeb一个>.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer