Goでは、同じタイプの変数を掛けることができるため、同じタイプの式の両方の部分を持つ必要があります。
最も単純なことは、乗算する前に整数を期間にキャストすることですが、これはユニットのセマンティクスに違反します。ユニットの期間内の継続時間の継続時間の倍数は何ですか?
私はむしろint64型にtime.Millisecondを変換し、ミリ秒数を掛け、その後、time.Durationにキャストしたい
:
time.Duration(int64(time.Millisecond) * int64(rand.Int31n(1000)))
こう表現のどの部分を言うことができますその種類に応じて有意義な価値を持つこと。 int64(time.Millisecond)
部分は、無次元の値です - 元の値の時間の最小単位の数。
numberOfMilliseconds := 100
// just can't come up with a name for following:
someLHS := time.Duration(numberOfMilliseconds)
fmt.Println(someLHS)
fmt.Println(someLHS*time.Millisecond)
:その種類とは無関係なものを保持しているタイプの値「time.Duration」、 -
time.Duration(rand.Int31n(1000)) * time.Millisecond
乗算の左側の部分はナンセンスです:
少しシンプルな道を歩むならばそして意味だけでなく、タイプに関連する実際の機能もあります。 このコードを印刷:
100ns
100ms
興味深いことに、コードサンプルはこちら期間変換の同じ誤解を招くようなセマンティクスで、最も簡単なコードを使用しています:https://golang.org/pkg/time/#Duration
秒:= 10
fmt.Print (時間の長さ(秒)*時間秒)//プリント10秒
ありがとうございました。私は乱数ジェネレータ 'rand.Seed(time.Now()。Unix())' –
を播種することについても学びました。 'time.Sleep(time.Second * 2)' –
これは、定数の使用方法に基づいて定数が適応型であるために機能します。 Rob Pikeのブログ記事を詳しく説明しています:http://blog.golang.org/constants – mna