Maison >développement back-end >Golang >Comment supprimer les marques d'apostrophe/octet des phrases de chaîne lors de la tentative d'analyse de yaml
Voici un exemple
La bibliothèque d'analyse yaml semble incapable d'imprimer"
Ainsi, lorsque j'analyse une phrase avec "
解析一个句子时,go 在它周围添加字节撇号 ('
, j'ajoute des apostrophes d'octets ('
)
Existe-t-il une astuce pour l'imprimer/créer une simple chaîne/chaîne citée sans ajouter d'apostrophes d'octets ?
Exemple de code :
import ( "fmt" "log" yaml "gopkg.in/yaml.v3" ) type X struct { Example string `yaml:"some-example"` } func main() { item := X{ Example: fmt.Sprint("\"some text\""), } res, err := yaml.Marshal(item) if err != nil { log.Fatal(err) } fmt.Print(string(res)) }
Imprimer some-example: '"some text"'
Vous voulezsome-example:“一些文本”
Y a-t-il une astuce pour le faire imprimer/créer une simple chaîne/chaîne entre guillemets sans ajouter d'apostrophes d'octets ?
Veuillez noter que vous imprimez la sortie de yaml.marshal
, c'est-à-dire que vous imprimez un document yaml valide et que le yaml n'a rien appelé "apostrophes d'octets". En yaml, une chaîne peut être sans guillemets, entre guillemets doubles ou entre guillemets simples, quoi qu'il en soit, ce sont toutes des chaînes.
# all three are strings a: foo bar b: "foo bar" c: 'foo bar'
Donc, votre sortie originale
some-example: '"some text"'
est yaml parfaitement valide, ce n'est pas go qui ajoute les guillemets simples, c'est le package ngopkg.in/yaml.v3
qui le fait.
afaict Il n'existe aucun moyen de définir des paramètres globaux pour yaml.encoder
yaml.encoder
设置全局设置 使用双引号样式封送每个字符串,但是您可以使用实现 yaml.marshaler
强制 yaml.encoder
afin de rassembler chaque chaîne en utilisant le style de guillemets doubles, mais vous pouvez utiliser l'implémentation yaml.marshaler
yaml.encoder
à toujours afficher toute valeur de ce type personnalisé Double chaîne entre guillemets. Par exemple :
type doublequotedstring string func (s doublequotedstring) marshalyaml() (interface{}, error) { return yaml.node{ kind: yaml.scalarnode, style: yaml.doublequotedstyle, // <- this is the relevant part value: string(s), }, nil }https://www.php.cn/link/99701e768d9a09b314e43a1d9e3e9dfa🎜
some-example: "\"some text\""
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!