strconv.AppendQuote în Go

Conversii între text și numere (strconv) Go 1.0 (variantele ToGraphic din Go 1.6)

Variantele Append ale funcțiilor Quote și QuoteRune: adaugă textul sau caracterul între ghilimele la un []byte.

Sintaxă
func AppendQuote(dst []byte, s string) []byte
func AppendQuoteToASCII(dst []byte, s string) []byte
func AppendQuoteToGraphic(dst []byte, s string) []byte
func AppendQuoteRune(dst []byte, r rune) []byte
func AppendQuoteRuneToASCII(dst []byte, r rune) []byte
func AppendQuoteRuneToGraphic(dst []byte, r rune) []byte

Ce face strconv.AppendQuote

Fiecare funcție Quote… are o pereche AppendQuote… care adaugă rezultatul la sfârșitul unui []byte și returnează slice-ul mărit. Regulile de scriere sunt identice: AppendQuote ca Quote, AppendQuoteToASCII ca QuoteToASCII, AppendQuoteRune ca QuoteRune și așa mai departe.

Ca toate funcțiile Append*, sunt utile când construiești un rezultat mare într-un singur buffer, fără texte intermediare.

Parametri

Parametru Descriere
dst Slice-ul la care se adaugă.
s / r Textul sau caracterul de pus între ghilimele.

Ce returnează

Slice-ul mărit.

Exemple

Exemplul 1: Toate cele șase variante în același buffer

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var b []byte
	b = strconv.AppendQuote(b, "Iași\n")
	b = append(b, ' ')
	b = strconv.AppendQuoteToASCII(b, "Iași")
	b = append(b, ' ')
	b = strconv.AppendQuoteToGraphic(b, "10\u00a0lei")
	b = append(b, '\n')
	b = strconv.AppendQuoteRune(b, 'ț')
	b = append(b, ' ')
	b = strconv.AppendQuoteRuneToASCII(b, 'ț')
	b = append(b, ' ')
	b = strconv.AppendQuoteRuneToGraphic(b, '\t')
	fmt.Println(string(b))
}

Rezultat

"Iași\n" "Ia\u0219i" "10 lei"
'ț' '\u021b' '\t'

Exemplul 2: Un rând cheie=valoare cu valori citate

package main

import (
	"fmt"
	"strconv"
)

func main() {
	date := [][2]string{{"nume", "Ana Pop"}, {"oras", "Iași"}, {"nota", "10"}}
	buf := make([]byte, 0, 64)
	for i, kv := range date {
		if i > 0 {
			buf = append(buf, ' ')
		}
		buf = append(buf, kv[0]...)
		buf = append(buf, '=')
		buf = strconv.AppendQuote(buf, kv[1])
	}
	fmt.Println(string(buf))
}

Rezultat

nume="Ana Pop" oras="Iași" nota="10"

Greșeli frecvente

  • Uiți să salvezi rezultatul în variabilă (b = strconv.AppendQuote(b, s)).

Comenzi înrudite

  • strconv.Quote: Pune textul între ghilimele, ca în codul Go, și scrie caracterele speciale ca secvențe \n, \t, \u…
  • strconv.QuoteRune: Scrie un caracter (rune) între apostrofuri, ca în codul Go: ‘ș’, ‘\n’, ‘\u0219’.
  • strconv.AppendInt: Adaugă un număr sau un bool, scris ca text, la sfârșitul unui []byte, fără să creeze un text intermediar.