猿问

有没有办法生成一段用特定字符填充的字节?

我想动态生成一段字节并用一个值预填充它们。在这种情况下,如果难度是 3,我想生成[]byte("000").


我有下面的工作代码,有没有办法把它优化成一个单行代码?(即初始化它而不必运行 for 循环并手动设置每个元素)?


var targetPrefix []byte = make([]byte, difficulty)


for i := 0; i < difficulty; i++ {

  targetPrefix[i] = 48 // UTF8 encoding for "0"

}


心有法竹
浏览 107回答 2
2回答

素胚勾勒不出你

我想这取决于你所说的优化是什么意思。如果您指的是性能,那不是真的。最终,当您“请求”一些内存时,必须对其进行迭代以设置值。在使用malloc. 如果你查看内存的内容,它可能是一堆 0,但它很可能是一堆随机值。但是,如果您只想编写更少的代码并利用已经存在的东西,您可以看看bytes.Repeat:targetPrefix := bytes.Repeat([]byte("0"), difficulty)

UYOU

在 Go 中,将您的代码编写为:package mainimport "fmt"func main() {&nbsp; &nbsp; difficulty := 7&nbsp; &nbsp; targetPrefix := make([]byte, difficulty)&nbsp; &nbsp; for i := range targetPrefix {&nbsp; &nbsp; &nbsp; &nbsp; targetPrefix[i] = '0'&nbsp; &nbsp; }&nbsp; &nbsp; fmt.Println(targetPrefix)}游乐场:https://play.golang.org/p/QrxEvsnRKMC输出:[48 48 48 48 48 48 48]或者,同样在 Go 中,写:package mainimport (&nbsp; &nbsp; "bytes"&nbsp; &nbsp; "fmt")func main() {&nbsp; &nbsp; difficulty := 7&nbsp; &nbsp; targetPrefix := bytes.Repeat([]byte{'0'}, difficulty)&nbsp; &nbsp; fmt.Println(targetPrefix)}游乐场:https://play.golang.org/p/Setx4kXTo1_H输出:[48 48 48 48 48 48 48]
随时随地看视频慕课网APP

相关分类

Go
我要回答