1. ホーム
  2. go

[解決済み] interface{}を文字列に変換するには?

2022-05-05 16:55:46

質問

を使っています。 ドコプト を使用してコマンドライン引数をパースしています。これはうまくいき、次のようなマップになります。

map[<host>:www.google.de <port>:80 --help:false --version:false]

今度は、このファイルを連結して hostport の値を、2つの値の間にコロンを入れた文字列に変換します。基本的には、次のようなものです。

host := arguments["<host>"] + ":" + arguments["<port>"]

残念ながら、これはエラーメッセージが表示され、うまくいきません。

無効な操作:引数[""] + ":" (インターフェース{}と文字列の型が不一致)

だから、明らかにマップから得た値(これは単なる interface{} を文字列に変換します。そこで質問なのですが、どうすればいいのでしょうか?

どのように解決するのですか?

を追加する必要があります。 タイプアサーション .(string) . これは、マップの型が map[string]interface{} :

host := arguments["<host>"].(string) + ":" + arguments["<port>"].(string)

最新版Docoptのリターン オプティクス オブジェクトに変換するためのメソッドを持っています。

host, err := arguments.String("<host>")
port, err := arguments.String("<port>")
host_port := host + ":" + port