Go:
Komentorivin argumenttien lukeminen
Kuinka:
Go tarjoaa suoran pääsyn komentorivin argumentteihin os
-paketin kautta, erityisesti käyttämällä os.Args
, joka on merkkijonojen taulukko. Tässä on yksinkertainen esimerkki, jolla pääsemme alkuun:
package main
import (
"fmt"
"os"
)
func main() {
// os.Args tarjoaa pääsyn raakoihin komentorivin argumentteihin
fmt.Println("Komentorivin argumentit:", os.Args)
if len(os.Args) > 1 {
// Käy läpi argumentit, ohittaen ensimmäisen (ohjelman nimen)
for i, arg := range os.Args[1:] {
fmt.Printf("Argumentti %d: %s\n", i+1, arg)
}
} else {
fmt.Println("Komentorivin argumentteja ei annettu.")
}
}
Esimerkkituloste suoritettaessa komennolla go run yourprogram.go arg1 arg2
saattaisi näyttää tältä:
Komentorivin argumentit: [/tmp/go-build123456789/b001/exe/yourprogram arg1 arg2]
Argumentti 1: arg1
Argumentti 2: arg2
Tämä tulostaa kaikki argumentit mukaan lukien ohjelman nimen (usein indeksissä 0), ja sen jälkeen iteroi jokaisen annetun argumentin yli, tulostaen ne. Hallitumpaan argumenttien parsimiseen voit harkita flag
-paketin käyttöä komentorivi-optioiden jäsentämiseen.
Syväsukellus
Historiallisesti komentorivin argumenttien käyttö on yhtä vanhaa kuin C-ohjelmointi, jossa argc
ja argv[]
palvelevat samankaltaista tarkoitusta. Go:ssa os.Args
tekee tästä suoraviivaista, mutta tarkoituksella alkeellista. Monimutkaisemmissa skenaarioissa, kuten lipukkeiden tai optioiden käsittelyssä, Go tarjoaa flag
-paketin, joka tarjoaa robustin jäsentämisominaisuuden. Tätä voidaan pitää “parempana” vaihtoehtona, kun sovelluksesi vaatii enemmän kuin vain sijaintiargumentteja.
Toisin kuin jotkut skriptauskielet, jotka tarjoavat sisäänrakennetun jäsentämisen komentorivin argumenteille assosiatiivisiin taulukoihin tai objekteihin, Go:n lähestymistapa vaatii ohjelmoijilta joko manuaalisen jäsentämisen käyttämällä os.Args
perustarpeisiin tai flag
-paketin hyödyntämistä monimutkaisemmissa skenaarioissa. Tämä suunnitteluperiaate heijastaa Go:n filosofiaa pitää ydin kieli yksinkertaisena tarjoten samalla tehokkaat vakio kirjastot yleisiin tehtäviin. Vaikka tämä saattaa tuoda lievän oppimiskäyrän niihin tottuneille sisäänrakennettuun jäsentämiseen, se tarjoaa suuremman joustavuuden ja kannustaa syvempään ymmärrykseen komentorivin argumenttien käsittelystä.