docopt を使用したコマンドライン引数解析のコンテキストでは、結果のマップに格納される値は次のとおりです。あらゆるタイプのデータを表すことができるインターフェース{} タイプ。ただし、このマップの値を文字列に連結しようとすると、型の不一致によりエラーが発生します。
この問題に対処するには、連結前にインターフェイスの値を文字列に変換するために型アサーションが必要です。{}マップのタイプが map[string]interface{} であり、値のタイプが異なる可能性があるため、これは特に重要です。
更新されたコードは次のようになります。
host := arguments["<host>"].(string) + ":" + arguments["<port>"].(string)
This type アサーションは、インターフェイスの値を明示的に文字列に変換し、連結が確実に成功するようにします。
あるいは、docopt の最新バージョンでは、返されるOpts オブジェクトには、変換に便利なメソッドが用意されています。
host, err := arguments.String("<host>") port, err := arguments.String("<port>") host_port := host + ":" + port
これらのメソッドは文字列への変換を処理し、変換された値を返すため、コードが簡素化され、この場合の型アサーションの必要がなくなります。
以上がDocopt コマンドライン引数の解析でインターフェイスを文字列に安全に変換するにはどうすればよいですか?{}の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。