私はGoLangを初めて勉強しましたが、現時点ではコンパイラが特定のコード行を受け入れない理由を忘れました。Golang:intをtime.durationに変換するには
私はダイヤルするときにタイムアウトを作成するために、この作業例を持っている:
conn, err := grpc.Dial(*connAddress,
grpc.WithInsecure(),
grpc.WithBlock(), // will block till the connection is available
grpc.WithTimeout(100*time.Second)) // times out after 100 seconds
今ハードコードさ100が素敵ではないので、私はそうのように、フラグを介して、そのコマンドラインの変数を作成したいと思います:
connTimeout := flag.Int64("connection-timeout", 100, "give the timeout for dialing connection x")
...
conn, err := grpc.Dial(*connAddress,
grpc.WithInsecure(),
grpc.WithBlock(),
grpc.WithTimeout(*connTimeout*time.Second))
しかし、これは、次のコンパイルエラーを与える:
mismatched types int64 and time.Duration
したがって、明らかに、int64フラグ変数を使用して期間を計算することはできませんが、数値はできますか?上記
var timeoutduration = time.Duration(*distributorTimeout) * time.Second
// create distributor connection
conn, err := grpc.Dial(*connAddress,
grpc.WithBlock(),
grpc.WithTimeout(timeoutduration))
期待どおりに動作するように思われる:
は、最終的に私が最初time.Durationに関連する変数を作成することにより、フラグ変数を使用するための解決策を見つけたダイヤルがあれば、コマンドラインなどのために試みられていますパラメータは与えられていて(デフォルトは100)、接続できなかったというメッセージをスローします。良い。
ただし、int64フラグ変数を直接使用すると時間を計算することはできません。つまり、数値100とint64を含む変数のgolangの違いは何ですか?
これは、質問への答えではなく、 'flag.Int64'の[' flag.Duration'](https://godoc.org/flag#Duration)を使用することを検討してください。 –
こんにちは@CeriseLimónはい、ありがとうございます:私はGolang newbyとして探しているものです:)それはtime.Durationを参照して保存実際に! – Hace