Ce face os.Expand
os.Expand funcționează ca os.ExpandEnv, dar valorile nu vin din mediu, ci din funcția mapping, pe care o scrii tu. Funcția primește numele (fără $ și acolade) și returnează textul de pus în loc.
Este un mod rapid de a face șabloane simple, fără text/template: mesaje, nume de fișiere, URL-uri.
Parametri
| Parametru | Descriere |
|---|---|
s |
Textul cu $nume sau ${nume}. |
mapping |
Funcția care primește numele și returnează valoarea. |
Ce returnează
Textul cu toate numele înlocuite.
Exemple
Exemplul 1: Valori dintr-un map
package main
import (
"fmt"
"os"
)
func main() {
date := map[string]string{"client": "Mihai", "comanda": "1042", "total": "249,90"}
sablon := "Bună, $client! Comanda #${comanda} în valoare de ${total} lei a fost expediată."
fmt.Println(os.Expand(sablon, func(nume string) string { return date[nume] }))
}
Rezultat
Bună, Mihai! Comanda #1042 în valoare de 249,90 lei a fost expediată.
Exemplul 2: Nume necunoscute păstrate vizibil
package main
import (
"fmt"
"os"
)
func main() {
date := map[string]string{"oras": "Cluj"}
rezultat := os.Expand("Livrare în $oras, județul $judet", func(nume string) string {
if v, ok := date[nume]; ok {
return v
}
return "<" + nume + " lipsă>"
})
fmt.Println(rezultat)
}
Rezultat
Livrare în Cluj, județul <judet lipsă>
Greșeli frecvente
- Te aștepți ca un
$izolat să rămână neschimbat în orice situație.$urmat de anumite caractere speciale ($1,$*) este tratat ca nume; dacă textul conține sume în dolari, alege alt șablon.
Comenzi înrudite
os.ExpandEnv: Înlocuiește $NUME și ${NUME} dintr-un text cu valorile variabilelor de mediu.os.Getenv: Returnează valoarea unei variabile de mediu sau textul gol dacă variabila nu există.