Maison > développement back-end > Golang > Comment gérer les champs inattendus dans fmt.Sprintf ?

Comment gérer les champs inattendus dans fmt.Sprintf ?

Patricia Arquette
Libérer: 2024-10-31 19:05:02
original
542 Les gens l'ont consulté

How to Handle Unexpected Fields in fmt.Sprintf?

Gestion des champs inattendus dans fmt.Sprintf

Dans la programmation Go, la fonction fmt.Sprintf est utilisée pour formater des chaînes. Cependant, un problème survient lorsque la chaîne d'entrée contient des champs inattendus, entraînant une panique.

Problème

Considérons l'extrait de code suivant :

<code class="go">package main

import "fmt"

func main() {
    tmp_str := "hello %s"
    str := fmt.Sprintf(tmp_str, "world")
    fmt.Println(str)
}</code>
Copier après la connexion

Dans cet exemple , tmp_str est une chaîne de modèle attendant un seul argument. Cependant, si le programme reçoit une chaîne complète comme "Hello Friends" (au lieu d'un modèle), fmt.Sprintf paniquera à cause de la présence d'un argument supplémentaire. Le message d'erreur serait :

Hello Friends%!(EXTRA string=world)
Copier après la connexion

Solution

Une approche pour gérer ce problème consiste à imposer l'utilisation d'un verbe %s valide dans la chaîne du modèle. Les utilisateurs peuvent fournir un verbe d'espace réservé, tel que %.0s ou %.s, pour indiquer que l'argument sera tronqué à une longueur nulle si aucun champ correspondant n'existe. Voici un exemple :

<code class="go">tmp_str := "Hello Friends%.s"</code>
Copier après la connexion

L'utilisation de %.s tronquera tous les champs supplémentaires, ce qui donnera le résultat souhaité :

Hello Friends
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal