原题如下:
write const declarations for KB,MB,up through YB as compactly as you can.
这里的k,m等都是10的次方,比如KB是1000,不是1024
书上有例子是1024的
<pre><code>
const(
_=1<<(10*iota)
KiB//1024
MiB//1048576
...
)//太多了就不打了
</code></pre>
每个后面乘上1000的我想到了,但是感觉不是很简洁,求帮助
我觉得不太有更简单的了,你可以将1000换成`1e3`,其实你可以看下go源代码的time.Duration,跟这个类似
```go
const (
Nanosecond Duration = 1
Microsecond = 1000 * Nanosecond
Millisecond = 1000 * Microsecond
Second = 1000 * Millisecond
Minute = 60 * Second
Hour = 60 * Minute
)
```
因为Go的常量声明必须再编译时就确定值,类型。所以我们也无法通过math.Pow10简化(也没简化。。)
#5
更多评论
```go
const (
KB = 1 << ((iota + 1) * 10)
MB = 1 << ((iota + 1) * 10)
GB = 1 << ((iota + 1) * 10)
)
```
#1