Go:
Kirjoittaminen standardivirheeseen
Miten:
Go:ssa os
-paketti tarjoaa Stderr
-arvon, joka edustaa standardivirhetiedostoa. Voit käyttää sitä fmt.Fprint
, fmt.Fprintf
tai fmt.Fprintln
-funktioiden kanssa kirjoittaaksesi stderr:iin. Tässä on yksinkertainen esimerkki:
package main
import (
"fmt"
"os"
)
func main() {
// Kirjoitetaan yksinkertainen merkkijono stderr:iin
_, err := fmt.Fprintln(os.Stderr, "Tämä on virheviesti!")
if err != nil {
panic(err)
}
// Muotoiltu virheviesti Fprintf:llä
errCount := 4
_, err = fmt.Fprintf(os.Stderr, "Prosessi suoritettu %d virheellä.\n", errCount)
if err != nil {
panic(err)
}
}
Esimerkkituloste (stderr:iin):
Tämä on virheviesti!
Prosessi suoritettu 4 virheellä.
Muista, että nämä viestit eivät näy tavallisessa tulostuksessa (stdout), vaan virrassa, jonka voi ohjata erikseen useimmissa käyttöjärjestelmissä.
Syväsukellus
Standardivirheen konsepti juontaa juurensa Unix-filosofiaan, joka erottaa selvästi tavallisen tulosteen ja virheviestit tehokkaamman datan käsittelyn ja käsittelyn kannalta. Go:ssa tämä perinne on omaksuttu os
-paketin kautta, joka tarjoaa suoran pääsyn stdin-, stdout- ja stderr-tiedostojen tunnisteisiin.
Vaikka kirjoittaminen suoraan os.Stderr
:iin sopii moniin sovelluksiin, Go tarjoaa myös kehittyneempiä lokituspaketteja, kuten log
, joka tarjoaa lisäominaisuuksia kuten aikaleimat ja joustavammat tulostusasetukset (esim. kirjoittaminen tiedostoihin). Log
-paketin käyttäminen, erityisesti suuremmissa sovelluksissa tai kun tarvitaan kattavampia lokitusominaisuuksia, voi olla parempi vaihtoehto. On myös huomionarvoista, että Gon tapa käsitellä virheitä, joka kannustaa palauttamaan virheet funktioista, täydentää virheviestien kirjoittamista stderr:iin mahdollistaen tarkemman virheenhallinnan ja raportoinnin.
Yhteenvetona, vaikka stderr:iin kirjoittaminen on olennainen tehtävä monissa ohjelmointikielissä, Gon vakio- ja suunnitteluperiaatteet tarjoavat sekä yksinkertaisia että edistyneitä tapoja hallita virhetulostusta, linjassa laajempien alan käytäntöjen kanssa samalla kun palvellaan Gon erityistä design-etiikkaa.