GO语言核心30讲 进阶技术

server/2024/9/18 12:45:51/ 标签: golang, 笔记, 开发语言

 原站地址:Go语言核心36讲_Golang_Go语言-极客时间

一、数组和切片

1. 两者最大的不同:数组的长度是固定的,而切片的长度是可变的。

2. 可以把切片看成是对数组的一层封装,因为每个切片的底层数据结构中,一定会包含一个数组。 切片也可以被看作是对底层数组的某个连续片段的引用(窗口)。

3. go语言不存在传值或传引用两种区分。 只要传递的是引用类型的,就是“传引用”。如果传递的是值类型的,就是“传值”。   切片属于引用类型,数组属于值类型。

4. 内建函数 len()计算长度,cap()计算容量。

例子:  s1是切片,底层数组是8个元素。 s2 := s1[3:6]

len(s2) = 6-3, 即 结束索引 减去 起始索引

cap(s2) = 8-3,即 底层数组长度 减去  起始索引 , 从起始索引位置向右扩展到最末端

5. 切片容量的增长逻辑:

(1) 一般情况下,新切片的容量将会是原切片容量的 2 倍。

(2) 如果新长度比原容量的 2 倍还要大,那么新容量就会以新长度为基准。

(3) 如果原长度大于等于1024,会以原容量的1.25倍作为基准,一直扩展到满足扩容需求。

6. 切片的底层数组在扩容时不会被替换。 扩容时是使用了新的切片和新的底层数组。 旧切片不变。


http://www.ppmy.cn/server/22666.html

相关文章

css折叠的导航栏

导航栏点击多个的效果 <div class"cont"><!-- 第一个导航 --><div class"nav_a"><input type"checkbox" name"chk" id"chk1"><label for"chk1"><div class"plus">…

CSS基础:position定位的5个类型详解!

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

STM32 SPI通信

一、SPI总线简介 1.1 SPI总线 串口外设接口&#xff08;Serial Peripheral Interface&#xff0c;SPI&#xff09;总线是一种同步串行外设接口&#xff0c;允许MCU与各种外围设备进行全双工、同步串行通信 SPI总线有四根通信线&#xff1a; ①SCK&#xff08;Serial Clock&a…

Docker容器:搭建LNMP架构

目录 前言 1、任务要求 2、Nginx 镜像创建 2.1 建立工作目录并上传相关安装包 2.2 编写 Nginx Dockerfile 脚本 2.3 准备 nginx.conf 配置文件 2.4 生成镜像 2.5 创建 Nginx 镜像的容器 2.6 验证nginx 3、Mysql 镜像创建 3.1 建立工作目录并上传相关安装包 3.2 编写…

Elasticsearch索引别名:管理与优化数据访问

索引别名是Elasticsearch提供的一项强大功能&#xff0c;它允许将一个或多个索引映射到一个易于记忆且可复用的名称&#xff0c;从而简化索引管理、支持数据迁移、优化查询性能以及实现数据过滤与路由。本文将详细阐述索引别名的创建与删除、配合数据过滤与数据路由的应用场景及…

Linux系统——HTTP常见面试题

目录 一、什么是HTTP协议 二、HTTP协议的使用场景有哪些 三、为什么TCP不行 四、HTTP发展历史 五、描述HTTP的工作过程 六、HTTP状态码有什么用 七、HTTP中的GET和POST作用 1.GET请求示例 2.POST请求示例 八、HTTP和HTTPS区别 HTTP&#xff08;超文本传输协议&#x…

Facebook的时间机器:回溯社交媒体的历史

1. 社交媒体的起源与早期模式 社交媒体的历史可以追溯到互联网的早期发展阶段。在Web 1.0时代&#xff0c;互联网主要是一个信息发布平台&#xff0c;用户主要是被动地接收信息。但随着Web 2.0的兴起&#xff0c;互联网逐渐转变为一个互动和参与的平台&#xff0c;社交媒体应运…

react 集成 tailwindcss

已创建的项目集成 tailwindcss 1.安装依赖 npm install tailwindcss 2. 根目录下创建文件tailwind.config.js 初始化文件 // https://unpkg.com/browse/tailwindcss3.1.6/stubs/defaultConfig.stub.js/** type {import(tailwindcss).Config} */ export default {purge: [./…

2023年营收331.26亿、净利超100亿,洋河后300亿时代拼劲十足

执笔 | 尼 奥 编辑 | 扬 灵 自2022年首次敲开300亿元大门、正式踏上后三百亿时代征程以来&#xff0c;洋河股份以长期耕耘、深度改革的韧性与决心&#xff0c;平稳地穿越行业周期&#xff0c;持续营造品牌势能上升通道。 4月27日&#xff0c;洋河股份发布2023年年报和2024…

HarmonyOS 鸿蒙下载三方依赖 ohpm环境搭建

前言 ohpm&#xff08;One Hundred Percent Mermaid &#xff09;是一个集成了Mermaid的命令工具&#xff0c;可以用于生成关系图、序列图、等各种图表。我们可以使用ohpm来生成漂亮且可读性强的图表。 本期教大家如何搭建ophm环境&#xff1a; 一、在DevEco Studio中&#…

R语言的基本图形

一&#xff0c;条形图 安装包 install.packages("vcd") 绘制简单的条形图 barplot(c(1,2,4,5,6,3)) 水平条形图 barplot(c(1,2,4,5,6,3),horiz TRUE) 堆砌条形图 > d1<-c("Placebo","Treated") > d2<-c("None",&qu…

ubuntu20.04开机运行java的sh脚本

用到了 rc.local 1、修改 /usr/lib/systemd/system/rc-local.service 在最下面添加 [Install] WantedBymulti-user.target 2、 系统没有 rc.local&#xff0c;需要手动创建 cd /etc vi rc.local在里面写入 /opt/start.sh chmod x /etc/rc.local # 添加可执行权限 chmod x…

Android 学习 鸿蒙HarmonyOS 4.0 第二天(项目结构认识)

项目结构认识 和 了解&#xff1a; 工程目录下的结构如下&#xff1a; 首先能看到有两个.开头的文件&#xff0c;分别是.hvigor 和 .idea。这两个文件夹都是与构建有关系的&#xff0c; 如果你开发过安卓app&#xff0c;构建完会生成一个apk安装包&#xff0c;鸿蒙则是生成hap…

8.SysTick定时器

SysTick为系统滴答定时器 定时器分类 内核级定时器(系统滴答定时器) 延时定时中断(给系统提供时钟节拍)给操作系统提供时基&#xff08;任务调度&#xff09;FreeRTOS UCOS5ms 基本定时器 延时定时中断时间片&#xff08;实现两盏LED灯同时以一个不同速度闪烁&#xff0c;轮询…

Spark RDD

Spark RDD操作 Spark执行流程 在上一讲中&#xff0c;我们知道了什么是Spark&#xff0c;什么是RDD、Spark的核心构成组件&#xff0c;以及Spark案例程序。在这一讲中&#xff0c;我们将继续需要Spark作业的执行过程&#xff0c;以及编程模型RDD的各种花式操作&#xff0c;首…

axios下载接口后端返回了json但前端得到的是blob

背景&#xff1a; 通过axios下载文件&#xff0c;正常情况下后端返回内容blob&#xff0c;前端接收并导出文件。但有时候&#xff0c;后端业务逻辑需要提示错误&#xff0c;于是返回json&#xff0c;但前端预期接收的是blob&#xff0c;所以导出去的文件内容是json字符串。 原…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展&#xff0c;设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台&#xff0c;结合NI Vision机器视觉库&#xff0c;开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…

支付宝沙盒(java使用支付宝)springboot

目录 前言 注册账号&#xff08;直接搜索支付宝沙盒&#xff09; ​编辑 具体代码编写 Application配置(按自己需求添加) config&#xff08;这里需要亲自添加appid&#xff0c;privateKey&#xff0c;publicKey&#xff09; controller类 Service类 ServiceImpl类 运…

基于onbar的备份与恢复实验

通过本文的备份恢复实验&#xff0c;我们可以深入了解onbar的使用方法和原理&#xff0c;包括如何进行完整备份、增量备份以及如何利用备份文件进行完全恢复与基于时间点的恢复。 1. 环境准备 1.1 配置存储管理器PSM的共享库 SinoDB 内置了一个存储管理器PSM&#xff0c;该存…

springboot使用@value读取配置

application.yaml spring:option:task:enable: truecron: 0 0 * * * * 获取 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOn…