当前位置: 首页 > news >正文

golang make 函数的三个参数分别有什么作用

在 Go 语言中,make 函数通常用于创建和初始化切片(slice)、映射(map)或信道(channel)。make 函数的三个参数用于指定要创建的数据结构及其大小和容量。具体作用如下:

第一个参数:类型(Type)

第一个参数是要创建的数据结构的类型,可以是 slice、map 或 channel。
例如,make([]int) 表示创建一个 int 类型的切片,make(map[string]int) 表示创建一个键为字符串、值为整数的映射。
第二个参数:长度(Length)

第二个参数是 slice 或 channel 的长度,或者是 map 的初始容量。
对于切片,长度表示切片中当前可以使用的元素个数。
对于通道,长度表示缓冲区的大小,即通道在阻塞发送前可以存储多少元素。
对于映射,这个参数表示映射的初始容量(映射的长度总是随着元素的添加而动态变化)。
第三个参数:容量(Capacity) (可选)

第三个参数是切片或通道的容量,仅适用于切片和通道,映射不使用这个参数。
对于切片,容量表示底层数组的总大小。切片的容量必须大于或等于其长度。
对于通道,容量表示通道的最大容量(即通道最多可以包含的元素数)。
示例:

go
复制代码
// 创建一个长度为 5,容量为 10 的 int 类型切片
s := make([]int, 5, 10)

// 创建一个初始长度为 0,容量为 10 的 string 类型的 map
m := make(map[string]int, 10)

// 创建一个长度和容量都为 5 的 int 类型通道
ch := make(chan int, 5)
总结:

make(T, length):适用于 slice 和 channel,指定长度。
make(T, length, capacity):适用于 slice 和 channel,指定长度和容量。
make(T):适用于 map,可以不指定初始容量,也可以通过第二个参数指定初始容量。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 新华三H3C HCL配置IS-IS基本配置
  • 【人工智能 | 机器学习】神经网络
  • Java算法之循环排序(Cyclic Sort)
  • 【Xcode】Xcode基本使用指引
  • java项目运行时提示process finished with exit code 1;只显示错误代码,没有显示具体错误信息;解决方案
  • 《工程机械》是什么级别的期刊?是正规期刊吗?能评职称吗?
  • 在ubuntu系统上使用Hadoop搭建集群
  • 向量数据库Faiss的搭建与使用
  • vivado 定义时间约束
  • 七,Spring Boot 当中的 yaml 语法使用
  • 虚幻地形高度图生成及测试
  • 数据结构树(C语言版)
  • 华为OD机试 - 猜数字 - 穷举搜索(Java 2024 E卷 100分)
  • docker实战基础三(Docker基础命令)
  • 深度学习100问54:什么是自动图像描述
  • 深入了解以太坊
  • [数据结构]链表的实现在PHP中
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 3.7、@ResponseBody 和 @RestController
  • CSS实用技巧
  • export和import的用法总结
  • Java多线程(4):使用线程池执行定时任务
  • Redux系列x:源码分析
  • Theano - 导数
  • WePY 在小程序性能调优上做出的探究
  • Windows Containers 大冒险: 容器网络
  • 反思总结然后整装待发
  • 仿天猫超市收藏抛物线动画工具库
  • 汉诺塔算法
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 免费小说阅读小程序
  • 驱动程序原理
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 最简单的无缝轮播
  • 《天龙八部3D》Unity技术方案揭秘
  • k8s使用glusterfs实现动态持久化存储
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • ### RabbitMQ五种工作模式:
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #微信小程序:微信小程序常见的配置传值
  • $(selector).each()和$.each()的区别
  • $.ajax()方法详解
  • $.each()与$(selector).each()
  • $forceUpdate()函数
  • (2)Java 简介
  • (2015)JS ES6 必知的十个 特性
  • (arch)linux 转换文件编码格式
  • (js)循环条件满足时终止循环
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355