GO---コマンドソースファイル
4311 ワード
コマンドソースファイルコマンドソースファイル受信パラメータ コマンドソースファイルパラメータの表示方法 コマンドソースファイルパラメータのカスタマイズ方法 ソースファイルは、コマンドソースファイル、ライブラリソースファイル、テストソースファイルの3つに分けられ、それぞれ異なる用途と作成ルールがあります.コマンドソースファイルは、プログラムの実行インタフェースであり、独立して実行できるプログラムごとに所有する必要があります.コマンドソースファイルの直接親ディレクトリと同じ名前の実行可能ファイルを構築またはインストールすることで生成できます.
ソースファイル宣言がmainパケットに属し、パラメータ宣言なしで結果宣言なしのmain関数が含まれている場合は、コマンドソースファイルです.このように:
go runを使用してこのセグメントコードを実行すると、Hello、worldが表示されます.
LinuxでもWindowsでも、コマンドラインを使ったことがあると、ほとんどのコマンド(command)がパラメータ(argument)を受信できることがわかります.コマンドソースファイルを構築またはインストールすることによって生成される実行可能ファイルは「コマンド」と見なすことができ、コマンドである以上、パラメータを受信する能力を備えなければならない.
コマンドソースファイル受信パラメータ
実行結果
flagはGo言語標準ライブラリのコードパッケージで、コマンドパラメータを受信および解析するためのflag.StringVarには4つのパラメータがあり、1つ目のパラメータはコマンドパラメータ値を格納するためのアドレスであり、2つ目のパラメータはコマンドパラメータの名前であり、3つ目はパラメータのデフォルト値であり、4つ目はコマンドパラメータの説明である
コマンドソースファイルパラメータの説明を表示する方法
コマンドソースファイルパラメータのカスタマイズ方法の説明
1.flag.Usageを使用して値を再割り当てします.flag.Usageのタイプはfunc()です.つまり、パラメータ宣言がなく、結果宣言がない関数のタイプです.
2、flag.CommandLineを使う
実行結果
flag.CommandLineコードを
実行結果
flag.ExitOnErrorは、コマンドパラメータコンテナに、コマンドの後に–helpまたはパラメータ設定が正しくない場合、コマンドパラメータ使用説明を印刷した後、ステータスコード2で現在のプログラムを終了することを意味します.
ステータスコード2はユーザが誤ってコマンドを使用したことを表し、flag.PanicOnErrorとの違いは最後に「ランタイムパニック(panic)」を投げ出すことである.
この方法を使うこともできます.もっと柔軟です.
ソースファイル宣言がmainパケットに属し、パラメータ宣言なしで結果宣言なしのmain関数が含まれている場合は、コマンドソースファイルです.このように:
package main
import "fmt"
func main() {
fmt.Println("Hello, world!")
}
go runを使用してこのセグメントコードを実行すると、Hello、worldが表示されます.
LinuxでもWindowsでも、コマンドラインを使ったことがあると、ほとんどのコマンド(command)がパラメータ(argument)を受信できることがわかります.コマンドソースファイルを構築またはインストールすることによって生成される実行可能ファイルは「コマンド」と見なすことができ、コマンドである以上、パラメータを受信する能力を備えなければならない.
コマンドソースファイル受信パラメータ
package main
import (
"os"
"flag"
"fmt"
)
var name string
func init() {
flag.StringVar(&name, "name", "everyone", "The greeting object.")
}
func main() {
flag.Parse()
fmt.Printf("Hello, %s!
", name)
}
実行結果
PS D:\GO\src\commad_src_file_test> go run .\command_src_file.go -name xx
Hello, xx!
flagはGo言語標準ライブラリのコードパッケージで、コマンドパラメータを受信および解析するためのflag.StringVarには4つのパラメータがあり、1つ目のパラメータはコマンドパラメータ値を格納するためのアドレスであり、2つ目のパラメータはコマンドパラメータの名前であり、3つ目はパラメータのデフォルト値であり、4つ目はコマンドパラメータの説明である
コマンドソースファイルパラメータの説明を表示する方法
PS D:\GO\src\commad_src_file_test> go run .\command_src_file.go --help
Usage of C:\Users\84030\AppData\Local\Temp\go-build412649366\b001\exe\command_src_file.exe:
-name string
The greeting object. (default "everyone")
exit status 2
コマンドソースファイルパラメータのカスタマイズ方法の説明
1.flag.Usageを使用して値を再割り当てします.flag.Usageのタイプはfunc()です.つまり、パラメータ宣言がなく、結果宣言がない関数のタイプです.
package main
import (
"os"
"flag"
"fmt"
)
var name string
func init() {
flag.StringVar(&name, "name", "everyone", "The greeting object.")
}
func main() {
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage of %s:
", "question")
flag.PrintDefaults()
}
flag.Parse()
fmt.Printf("Hello, %s!
", name)
}
PS D:\GO\src\commad_src_file_test> go run .\command_src_file.go --help
Usage of question:
-name string
The greeting object. (default "everyone")
exit status 2
2、flag.CommandLineを使う
package main
import (
"os"
"flag"
"fmt"
)
var name string
func init() {
flag.StringVar(&name, "name", "everyone", "The greeting object.")
}
func main() {
flag.CommandLine = flag.NewFlagSet("", flag.ExitOnError)
flag.CommandLine.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage of %s:
", "question")
flag.PrintDefaults()
}
flag.Parse()
fmt.Printf("Hello, %s!
", name)
}
実行結果
PS D:\GO\src\commad_src_file_test> go run .\command_src_file.go --help
Usage of question:
exit status 2
flag.CommandLineコードを
flag.CommandLine = flag.NewFlagSet("", flag.PanicOnError)
実行結果
PS D:\GO\src\commad_src_file_test> go run .\command_src_file.go --help
Usage of question:
panic: flag: help requested
goroutine 1 [running]:
flag.(*FlagSet).Parse(0xc0000440c0, 0xc000004430, 0x1, 0x1, 0xc0000401f0, 0xc0000440c0)
E:/Go/src/flag/flag.go:938 +0x107
flag.Parse()
E:/Go/src/flag/flag.go:953 +0x76
main.main()
D:/GO/src/commad_src_file_test/command_src_file.go:25 +0x74
exit status 2
flag.ExitOnErrorは、コマンドパラメータコンテナに、コマンドの後に–helpまたはパラメータ設定が正しくない場合、コマンドパラメータ使用説明を印刷した後、ステータスコード2で現在のプログラムを終了することを意味します.
ステータスコード2はユーザが誤ってコマンドを使用したことを表し、flag.PanicOnErrorとの違いは最後に「ランタイムパニック(panic)」を投げ出すことである.
この方法を使うこともできます.もっと柔軟です.
package main
import (
"os"
"flag"
"fmt"
)
var name string
var cmdLine = flag.NewFlagSet("question", flag.ExitOnError)
func init() {
cmdLine.StringVar(&name, "name", "everyone", "The greeting object.")
}
func main() {
cmdLine.Parse(os.Args[1:]) //
fmt.Printf("Hello, %s!
", name)
}