go - 有没有办法生成一个充满特定字符的字节片?
问题描述
我想动态生成一片字节并用 aa 值预填充它们。在这种情况下,如果难度为 3,我想生成[]byte("000")
.
我有下面的工作代码,有没有办法把它优化成一个单行代码?(即初始化它而不必运行for循环并手动设置每个元素)?
var targetPrefix []byte = make([]byte, difficulty)
for i := 0; i < difficulty; i++ {
targetPrefix[i] = 48 // UTF8 encoding for "0"
}
解决方案
我想这取决于您所说的优化是什么意思。如果你的意思是性能,那么不是真的。最终,当您“请求”一些内存时,必须对其进行迭代以设置值。在使用malloc
. 如果你查看内存的内容,它可能是一堆 0,但它可能是一堆随机值。
但是,如果您只想编写更少的代码并利用已经存在的东西,您可以查看bytes.Repeat:
targetPrefix := bytes.Repeat([]byte("0"), difficulty)
推荐阅读
- node.js - 没有从 Axios 和 curl 调用到特定站点的数据
- javascript - 如何使用socket.io nodejs以角度8打开弹出窗口
- c++ - 将原始文件添加到 .gitignore
- mysql - 使用 mysql 查询从日期、间隔和期间的集合中计算订阅结束日期?
- ios - 如何从 Swift 5 中的资产文件夹创建图像数组?
- c - 无效 *ptr = (int *)&a; 它不是对指针进行类型转换吗
- javascript - jQuery:选择标签期望一个ID
- c# - 选择要使用的 .NET Core 版本
- amazon-web-services - 数据库子网组子网 ID 的问题
- javascript - 当我通过路由器链接访问 URL 时,组件中的 Vue.js v-for 会呈现,但是如果我手动键入 URL 或刷新页面,则 v-for 不会呈现