Go语言make创建切片的五种方式

 更新时间:2025年09月18日 08:48:51   作者:liushen0528  
本文主要介绍了Go语言make创建切片的五种方式,包括指定长度、预分配容量、零长度空切片、带容量缓冲区、匿名结构体切片,具有一定的参考价值,感兴趣的可以了解一下

一、创建指定长度切片

创建指定长度的slice,元素初始化为零值,适用于知道长度且需要预先分配空间场景,代码示例如下:

s1 := make([]int, 5)

s2 := make([]string, 5)

此时创建的slice的容量于指定长度一致,当使用append追加数据超过容量时,底层自动扩容。

二、创建预分配容量切片

创建slice时指定长度以及容量,底层数组预留扩展空间,适用于会频繁append操作的场景,代码示例如下:

s3 := make([]string, 5, 10) 

三、创建零长度空切片

创建一个长度为0但是不为nil的slice,适用于需要返回空切片但避免nil判断场景,代码示例如下:

s4 := make([]string, 0)

四、创建带容量的空切片

创建一个长度为0容量为256的slice,适用于接收大量数据的缓冲区场景,代码示例如下:

s5 := make([]string, 0, 256)

五、创建匿名结构体切片

创建匿名结构体slice,让编译器根据上下文自动推断元素类型,适用于临时数据存储场景,代码示例如下:

s6 := make([]struct{}, 2)

六、创建方式对比

创建方式长度容量底层数组典型用途
make([]T, n)nn已分配固定长度集合
make([]T, n, m)nm已分配可扩展集合
make([]T, 0)00未分配空集合占位符
make([]T, 0, cap)0cap已分配预分配缓冲区
make([]struct{}, n)nn已分配轻量级占位结构

建议优先使用make([]T, n, m)进行创建slice,预先分配容量,以较少扩容操作,提升性能。

到此这篇关于Go语言make创建切片的五种方式的文章就介绍到这了,更多相关Go语言make创建切片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 聊聊golang的defer的使用

    聊聊golang的defer的使用

    这篇文章主要介绍了聊聊golang的defer的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 详解如何在Golang中执行shell命令

    详解如何在Golang中执行shell命令

    这篇文章主要为大家详细介绍了在 golang 中执行 shell 命令的多种方法和场景,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-02-02
  • Golang HTTP 服务平滑重启及升级的思路

    Golang HTTP 服务平滑重启及升级的思路

    Golang HTTP服务在上线时,需要重新编译可执行文件,关闭正在运行的进程,然后再启动新的运行进程。这篇文章主要介绍了Golang HTTP 服务平滑重启及升级,需要的朋友可以参考下
    2020-04-04
  • Go语言网络故障诊断与调试技巧

    Go语言网络故障诊断与调试技巧

    在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和网络编程概念,通过实际项目经验、可运行的代码示例和踩坑教训,为你提供一套系统化的网络诊断方法
    2025-08-08
  • GoLang unsafe包详细讲解

    GoLang unsafe包详细讲解

    从golang的定义来看,unsafe 是类型安全的操作。顾名思义,它应该非常谨慎地使用; unsafe可能很危险,但也可能非常有用。例如,当使用系统调用和Go结构必须具有与C结构相同的内存布局时,您可能别无选择,只能使用unsafe
    2022-10-10
  • Apache IoTDB开发系统之Go原生接口方法

    Apache IoTDB开发系统之Go原生接口方法

    这篇文章主要为大家介绍了 Apache IoTDB开发系统之Go原生接口方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Go  import _ 下划线使用

    Go  import _ 下划线使用

    这篇文章主要为大家介绍了Go  import下划线_使用小技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • 详解如何利用Golang泛型提高编码效率

    详解如何利用Golang泛型提高编码效率

    Golang的泛型已经出来有一段时间了,大家应该或多或少对它有所了解。虽然Golang的泛型在功能上确实比较简单,而且确实可能会增加代码的复杂度,过度使用可能还会降低代码可读性。本文就来介绍一下Golang泛型的相关知识吧
    2023-04-04
  • Go语言中sync.Cond使用详解

    Go语言中sync.Cond使用详解

    本文主要介绍了Go语言中sync.Cond使用详解,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • golang中的string与其他格式数据的转换方法详解

    golang中的string与其他格式数据的转换方法详解

    这篇文章主要介绍了golang中的string与其他格式数据的转换方法,文章通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-10-10

最新评论