如何创建 5 个值的数组/切片,所有值都相同

2024-02-10

Problem

在go编程语言中,如何创建一个长度为5的数组,并且所有元素具有相同的值,例如42。

优先顺序

可读性、简洁性、性能。


例如,

package main

import (
    "fmt"
)

func main() {
    s := make([]int, 5)
    for i := range s {
        s[i] = 42
    }
    fmt.Println(len(s), s)
}

操场:https://play.golang.org/p/GjTXruMsJ5h https://play.golang.org/p/GjTXruMsJ5h

Output:

5 [42 42 42 42 42]

一些基准:

package main

import (
    "fmt"
    "testing"
)

func BenchmarkStack(b *testing.B) {
    for N := 0; N < b.N; N++ {
        s := make([]int, 5)
        for i := range s {
            s[i] = 42
        }
    }
}

func BenchmarkHeap(b *testing.B) {
    var s []int
    for N := 0; N < b.N; N++ {
        s = make([]int, 5)
        for i := range s {
            s[i] = 42
        }
    }
}

func BenchmarkHygull(b *testing.B) {
    for N := 0; N < b.N; N++ {
        var s []int
        for i := 0; i < 5; i++ {
            s = append(s, 42)
        }
    }
}

Output:

$ go test slice42_test.go -bench=. -benchmem
BenchmarkStack-8     1000000000      2.05 ns/op     0 B/op    0 allocs/op
BenchmarkHeap-8       100000000     26.9 ns/op     48 B/op    1 allocs/op
BenchmarkHygull-8      10000000    123 ns/op      120 B/op    4 allocs/op
$ 

BenchmarkHygull展示了@hygull 的解决方案是多么低效。


一句“一行”:

package main

import (
    "fmt"
)

func newInts(n, v int) []int {
    s := make([]int, n)
    for i := range s {
        s[i] = v
    }
    return s
}

func main() {
    s := newInts(5, 42)
    fmt.Println(len(s), s)
}

操场:https://play.golang.org/p/t8J-AjYQ72l https://play.golang.org/p/t8J-AjYQ72l

Output:

5 [42 42 42 42 42]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何创建 5 个值的数组/切片,所有值都相同 的相关文章

随机推荐

  • 如何将AWS API网关阶段指向特定的lambda函数别名?

    所以根据AWS文档 而不是在 Lambda 函数中使用 Amazon 资源名称 ARN 事件源映射 您可以使用别名 ARN 这种方法意味着 您不需要更新事件源映射 升级新版本或回滚到以前的版本 我有 AWS lambda 函数pets我创建
  • iPhone OS 实用应用程序 - 翻转视图和主视图通信

    我目前正在开发 iPhone 2 1 应用程序 我是 Objective C 的新手 有 Java 背景 我的应用程序以 Xcode 中可用的实用应用程序模板和 iPhone SDK 为基础 目前我有一些控件 例如UISlider和文本框
  • ssh2_auth_pubkey_file 身份验证总是失败

    我正在尝试使用 PHP 的 ssh2 函数连接到另一台机器 我知道 ssh 密钥是在没有密码的情况下创建的并且已正确分发 我可以ssh user host在我机器上的终端中连接到服务器 PHP 函数尝试使用 ssh 密钥文件连接到 IP 地
  • 如何保护 Firebase 数据库中用户和管理员的访问安全?

    我使用 Redux Saga 作为中间件 我通过查询将参数传递给 Firebase 数据库 但无法在数据库端访问它 Query database ref workouts child userId once value then snaps
  • 如何使用 C# 提取 MFCC

    我正在做一个个人项目 需要我用 C 进行一些信号处理和特征提取 更具体地说是提取MFCCs http en wikipedia org wiki Mel frequency cepstrum 有没有可用的代码用于在 C 中计算 MFCC 另
  • React.js - ForEach 作为一流组件?

    我听说过反应模板 但我仍然想知道是否可以制作一流的 ForEach 组件 我的最终目标是使这样的东西更具可读性 ul list map function item i return li item li ul instead ul ul
  • 调整窗口矩形文档

    MSDN 库将调整窗口矩形的 dwStyle 参数记录为 需要计算所需尺寸的窗口的窗口样式 请注意 您不能 指定 WS OVERLAPPED 样式 我还没有找到任何解释 他们所说的 不能 是什么意思 为什么我不能这样做 The WS OVE
  • 在 Javascript 中查看多页 TIFF

    我目前有多页TIFF图像 我需要通过 Javascript 逐页浏览它们 我对此一无所知 你能帮助我吗 我发现了一些其他问题 但似乎没有一个与 Javascript 有关 谢谢 我使用 Emscripten 将 LibTIFF 库移植到 J
  • 验证 .htaccess 文件中的 Googlebot

    我已经调查了一下 下面的代码可以工作吗 没那么容易检查 RewriteEngine on HostnameLookups Double RewriteCond REMOTE HOST googlebot com NC RewriteRule
  • 在 python 子进程中使用 exec 查找命令给出错误

    我正在尝试使用子进程模块 python 执行以下命令 usr bin find
  • Firefox 扩展内容脚本不会加载和附加 HTML

    下面的所有内容都可以在 Chrome 扩展中运行 但在移植到 Firefox 时会默默失败 加载中test html除非我删除 from it 附加 test element对身体 Firefox 扩展的样式是否必须放入单独的文件中 为什么
  • 我的 ViewModel 应该有视图或 ViewModel 的 ObservableCollection 吗?

    我试图理解使用时的基本 MVVM 设计方法项目控制通过绑定它数据模板 to 可观察集合在视图模型上 我见过绑定到 ObservableCollections 的示例strings Views and 视图模型 绑定到字符串似乎只是为了dem
  • 如何在 firefox 扩展中创建 JSON post 请求?

    我正在尝试调用 Google API 这是来自 Firefox 扩展的 JSON post 请求 例如 POST https www googleapis com urlshortener v1 url Content Type appli
  • Mac OS 10.9 不显示 Arduino 的 USB 调制解调器

    我正在尝试选择 dev tty usbmodem on my Arduino Lenardo设备 操作系统是Mac OSX 10 9 问题是它没有显示 我什至尝试安装FTDI http www ftdichip com Drivers VC
  • 高效的 p​​yspark join

    我读过很多关于如何在 pyspark 中进行高效连接的文章 我发现实现高效连接的方法基本上有 如果可以的话 使用广播连接 我通常不能因为数据框太大 考虑使用非常大的集群 我宁愿不因为 Use the 相同的分区器 最后一个是我宁愿尝试的一个
  • 双破折号 [--] 选项在 git Reset 上有什么作用?

    我见过这样的命令 git reset e542 readme txt 我了解此命令将提交 e542 中的文件 readme txt 的内容放入索引中 但什么是 选项在那里做什么 git reset 手册页将其列为前两种形式的可选 但我找不到
  • 如何构建神经网络来将两个数字相乘

    我正在尝试构建一个将 2 个数字相乘的神经网络 为了做同样的事情 我借助了 scikit learn 我想要一个具有 2 个隐藏层 5 3 和 ReLU 作为激活函数的神经网络 我已经定义了我的MLPRegressor如下 X data d
  • 校准 UI 加速度计?

    在我的应用程序中 我使用加速度计来控制游戏中的角色 现在我只允许纵向方向 因此用户必须向右或向左倾斜设备才能移动角色 到目前为止效果很好 我现在想要完成的是 校准 加速度计以考虑用户当前正在玩的倾斜度 假设用户侧躺 这些值将会倾斜 因为它没
  • 对于 BLOB,“length() IS NULL”是否与“IS NULL”等效且更快?

    我在 SSD 上有一个约 90 MB 的 SQLite 数据库 主要由消息附件组成 其中包括 BLOB 列内容 用于存储二进制附件数据 现在我发现以下查询 SELECT message id FROM attachments WHERE l
  • 如何创建 5 个值的数组/切片,所有值都相同

    Problem 在go编程语言中 如何创建一个长度为5的数组 并且所有元素具有相同的值 例如42 优先顺序 可读性 简洁性 性能 例如 package main import fmt func main s make int 5 for i