Ce face flag.Float64
flag.Float64 citește un număr real cu strconv.ParseFloat. Separatorul zecimal este punctul (0.19), nu virgula. Sunt acceptate și formate ca 1e3 sau -2.5.
Parametri
| Parametru | Descriere |
|---|---|
name |
Numele opțiunii. |
value |
Valoarea implicită. |
usage |
Descrierea pentru ajutor. |
Ce returnează
Un *float64.
Exemple
Exemplul 1: Calculul prețului cu TVA
package main
import (
"flag"
"fmt"
"os"
)
func main() {
os.Args = []string{"pret", "-net", "120.50", "-tva=0.21"}
net := flag.Float64("net", 0, "prețul fără TVA, în lei")
tva := flag.Float64("tva", 0.19, "cota de TVA")
flag.Parse()
fmt.Printf("net %.2f + TVA %.0f%% = %.2f lei\n", *net, *tva*100, *net*(1+*tva))
}
Rezultat
net 120.50 + TVA 21% = 145.81 lei
Exemplul 2: Virgula nu este acceptată
Setul de opțiuni afișează singur eroarea și ajutorul, apoi Parse returnează aceeași eroare, pe care o afișăm și noi.
package main
import (
"flag"
"fmt"
"os"
)
func main() {
fs := flag.NewFlagSet("pret", flag.ContinueOnError)
fs.SetOutput(os.Stdout)
fs.Float64("net", 0, "prețul fără TVA")
fmt.Println(fs.Parse([]string{"-net=120,50"}))
}
Rezultat
invalid value "120,50" for flag -net: parse error
Usage of pret:
-net float
prețul fără TVA
invalid value "120,50" for flag -net: parse error
Greșeli frecvente
- Utilizatorii din România scriu
120,50. Explică formatul în textul de ajutor sau înlocuiește virgula cu punct înainte, citind opțiunea ca text.
Comenzi înrudite
flag.Int: Definește o opțiune număr întreg (-n=10) și returnează un pointer la valoarea ei.flag.Duration: Definește o opțiune de durată (-timeout=30s, -interval=1m30s) și returnează un pointer la time.Duration.flag.Parse: Citește opțiunile din linia de comandă (os.Args) și completează variabilele definite cu flag.String, flag.Int etc.