Maison >développement back-end >Golang >Comment puis-je implémenter la fonctionnalité ToString() personnalisée pour les objets non-string dans Go ?

Comment puis-je implémenter la fonctionnalité ToString() personnalisée pour les objets non-string dans Go ?

DDD
DDDoriginal
2024-12-09 21:55:141013parcourir

How Can I Implement Custom ToString() Functionality for Non-String Objects in Go?

Fonctionnalité ToString() personnalisée dans Go

Le langage Go fournit la fonction strings.Join pour concaténer des tranches de chaîne, mais que faire si vous le souhaitez joindre des objets arbitraires avec des représentations sous forme de chaîne personnalisées ? Cette question se pose lorsque vous devez transmettre des objets non-chaînes qui n'implémentent pas nativement la méthode ToString().

Interface ToString() personnalisée

Pour résoudre ce problème problème, une interface ToStringConverter personnalisée peut être créée :

type ToStringConverter interface {
    ToString() string
}

Tout objet qui implémente cette interface peut ensuite être transmis à un Join modifié function :

func Join(a []ToStringConverter, sep string) string

Implémentation de ToString()

Pour activer les représentations de chaîne personnalisées, implémentez simplement la méthode String() pour tout type nommé :

package main

import "fmt"

type bin int

func (b bin) String() string {
        return fmt.Sprintf("%b", b)
}

func main() {
        fmt.Println(bin(42))
}

Playground et sortie

Lien Playground : [http://play.golang.org/p/Azql7_pDAA](http://play.golang.org/p/Azql7_pDAA)

Sortie :

101010

Cette approche permet pour une plus grande flexibilité dans la concaténation de chaînes, vous permettant d'incorporer des objets non-chaînes avec des représentations de chaîne personnalisées.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn