登录
首页 >  Golang >  Go问答

能够创建包含指定字符的字节片吗?

来源:stackoverflow

时间:2024-03-02 14:51:24 444浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《能够创建包含指定字符的字节片吗?》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

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

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

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

for i := 0; i < difficulty; i++ {
  targetPrefix[i] = 48 // UTF8 encoding for "0"
}

解决方案


我想这取决于你所说的优化是什么意思。如果你指的是性能,那么不。最终,当您“请求”一些内存时,必须对其进行迭代以设置值。在使用 malloc 后编写 c/c++ 时,这一点通常更为明显。如果你查看内存的内容,它可能是一堆 0,但也可能是一堆随机值。

但是,如果您只想编写更少的代码并利用已经存在的东西,您可以看看 bytes.Repeat

targetprefix := bytes.repeat([]byte("0"), difficulty)

在 go 中,将代码编写为:

package main

import "fmt"

func main() {
    difficulty := 7
    targetprefix := make([]byte, difficulty)
    for i := range targetprefix {
        targetprefix[i] = '0'
    }
    fmt.println(targetprefix)
}

演示:https://play.golang.org/p/QrxEvsnRKMC

输出:

[48 48 48 48 48 48 48]

或者,也在 go 中编写:

package main

import (
    "bytes"
    "fmt"
)

func main() {
    difficulty := 7
    targetprefix := bytes.repeat([]byte{'0'}, difficulty)
    fmt.println(targetprefix)
}

演示:https://play.golang.org/p/Setx4kXTo1_H

输出:

[48 48 48 48 48 48 48]

本篇关于《能够创建包含指定字符的字节片吗?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>