golang学习笔记——切片

切片是数组或另一个切片之上的数据结构。 我们将源数组或切片称为基础数组。 通过切片,可访问整个基础数组,也可仅访问部分元素。

切片只有 3 个组件:

  • 指向基础数组中第一个可访问元素的指针。 此元素不一定是数组的第一个元素 array[0]
  • 切片的长度。 切片中的元素数目。
  • 切片的容量。 切片开头与基础数组结束之间的元素数目。

下述代码确认切片指向数组,而你在切片中所做的每个更改都会影响基础数组。

package mainimport "fmt"func main() {letters := []string{"A", "B", "C", "D", "E"}fmt.Println("Before", letters)slice1 := letters[0:2]slice2 := letters[1:4]slice1[1] = "Z"fmt.Println("After", letters)fmt.Println("Slice2", slice2)
}

输出

Before [A B C D E]
After [A Z C D E]
Slice2 [Z C D]

可在输出中看到字母 B 已替换为 Z,它会影响指向 letters 数组的每个切片。
若要解决此问题,你需要创建一个切片副本,它会在后台生成新的基础数组。 可以使用以下代码:

package mainimport "fmt"func main() {letters := []string{"A", "B", "C", "D", "E"}fmt.Println("Before", letters)slice1 := letters[0:2]slice2 := make([]string, 3)copy(slice2, letters[1:4])slice1[1] = "Z"fmt.Println("After", letters)fmt.Println("Slice2", slice2)
}

输出

Before [A B C D E]
After [A Z C D E]
Slice2 [B C D]

此时 slice1 中的更改并未影响新的 slice2。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【WiFI问题自助】解决WiFi能连上但是没有网的问题

WiFi能连上但是没有网的问题 背景:wifi能连上,但是没有网 解决 遇事不决,先重启啊!怎么重启?拔掉电源再插上!拔掉网线再插上! 直接ok了。 思考记录 今天WiFi又上不了网了,昨天报…

【OpenCV实现图像:使用OpenCV进行图像处理之透视变换】

文章目录 概要计算公式举个栗子实际应用小结 概要 透视变换(Perspective Transformation)是一种图像处理中常用的变换手段,它用于将图像从一个视角映射到另一个视角,常被称为投影映射。透视变换可以用于矫正图像中的透视畸变&…

MySQL高可用性:主从复制、读写分离与集群搭建

MySQL作为常用的关系型数据库管理系统,在构建高可用性解决方案上有着多种实践方法。本文将深入探讨MySQL的主从复制、读写分离以及集群搭建,为实现高可用性提供详细指南。 1. 主从复制(Master-Slave Replication) 1.1 什么是主从…

Jenkins 配置节点交换内存

查看交换内存 free -hswapon -s创建swap文件 dd if/dev/zero of/mnt/swap bs1M count1024启用交换文件 设置权限 chmod 600 /mnt/swap设置为交换空间 mkswap /mnt/swap启用交换 swapon /mnt/swap设置用户组 chown root:root /mnt/swap查看 swapon -s重启系统也能生效还需要修…

设计模式-行为型模式-模板方法模式

一、什么是模板模式 模板方法模式(Template Method Pattern)是一种行为型设计模式,它定义了一个算法骨架,允许子类在不改变算法整体结构的情况下重新定义算法的某些步骤。 主要组成部分: 1、模板方法(Templ…

JS解决跨域问题

在JavaScript中&#xff0c;解决跨域问题主要可以通过以下几种方法&#xff1a; JSONP (JSON with Padding)&#xff1a; JSONP 是通过在 DOM 中插入 <script> 标签&#xff0c;利用 script 标签的 src 属性不受同源策略限制的特性&#xff0c;实现跨域数据请求。示例&am…

论文笔记:Localizing Cell Towers fromCrowdsourced Measurements

2015 1 Intro 1.1 motivation opensignal.com 、cellmapper.net 和 opencellid.org 都是提供天线&#xff08;antenna&#xff09;位置的网站 他们提供的天线位置相当准确&#xff0c;但至少在大多数情况下不完全正确这个目标难以实现的原因是蜂窝网络供应商没有义务提供有…

.NET 使用配置文件

我简单测试了一下json格式配置文件&#xff0c;在这里记录一下&#xff0c;方便以后查看。 需要引用的库&#xff1a; Microsoft.Extensions.Hosting 创建json格式文件&#xff1a;appsettings.json 在工程文件中包含json文件&#xff1a; <ItemGroup><Content In…

面试题:数据库日期类型字段,需要兼容不同数据库,应该如何选择?

当设计一个产品&#xff0c;其中很多地方要把日期类型保存到数据库中&#xff0c;如果产品有兼容不同数据库产品的需求&#xff0c;那么&#xff0c;应当怎样设计呢&#xff1f; 当然&#xff0c;首先想到的是&#xff0c;使用数据库的 Date 或 DateTime 类型&#xff0c;可是…

wincc定时器功能介绍

1定时器功能介绍 WinCC中定时器的使用可以使WinCC按照指定的周期或者时间点去执行任务&#xff0c;比如周期执行变量归档、在指定的时间点执行全局脚本或条件满足时打印报表。WinCC已经提供了一些简单的定时器&#xff0c;可以满足大部分定时功能。但是在有些情况下&#xff0c…

Python 基础语法 Hello, World!

Python 基础语法 import concurrent.futures import threading import timedef switch_case(argument):switch {1: "这是第一种情况",2: "这是第二种情况",3: "这是第三种情况"}return switch.get(argument, "这是默认情况")def my_…

【计算机网络】多路复用的三种方案

文章目录 1. selectselect函数select的工作特性select的缺点 2. pollpoll函数poll与select的对比 3. epollepoll的三个接口epoll的工作原理epoll的优点LT和ET模式epoll的应用场景 &#x1f50e;Linux提供三种不同的多路转接&#xff08;又称多路复用&#xff09;的方案&#xf…

6、信息打点——Web架构篇语言中间件数据库系统源码获取

1、信息搜集搜集哪些东西&#xff1f; 架构信息收集&#xff0c;主要包括&#xff1a;操作系统、开发语言、中间件容器、数据库类型、第三方软件等&#xff1b; web源码信息收集&#xff0c;CMS开源&#xff1f;闭源&#xff1f;售卖&#xff1f;自主研发&#xff1f; 进行web…

【python FastAPI】fastapi中如何限制输入参数,如何让docs更好看,如何自定义错误码json返回

原则&#xff1a; 输入输出都基于BaseModel依靠JSONResponse制定返回错误的json信息依靠装饰器中app.post制定responses字典从而让docs文档更丰富 import uvicorn from pydantic import BaseModel, Field from fastapi import FastAPI, HTTPException from fastapi.middleware…

Python之pyc文件的生成与反编译

目录 1、什么是pyc文件 2、手动生成pyc文件 3、pyc文件的执行 4、pyc文件的反编译 1、什么是pyc文件 pyc文件&#xff08;PyCodeObject&#xff09;是Python编译后的结果。当python程序运行时&#xff0c;编译的结果是保存于PyCodeObject&#xff0c;程序运行结束后&#x…

(动手学习深度学习)第13章 实战kaggle竞赛:狗的品种识别

文章目录 1. 导入相关库2. 加载数据集3. 整理数据集4. 图像增广5. 读取数据6. 微调预训练模型7. 定义损失函数和评价损失函数9. 训练模型 1. 导入相关库 import os import torch import torchvision from torch import nn from d2l import torch as d2l2. 加载数据集 - 该数据…

编程中的各种常见的文件编码有哪些?

在计算机编程中&#xff0c;常见的文件编码有很多种。下面是一些常见的文件编码&#xff1a; UTF-8&#xff08;Unicode Transformation Format - 8-bit&#xff09;&#xff1a; 它是一种变长字符编码&#xff0c;能够表示世界上几乎所有的字符&#xff0c;是最常用的 Unicode…

java抽象类和static

抽象类 并不是所有的类都是用来描绘对象的, 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类. 抽象类 使用abstract 修饰类抽象类不能被实例化。在抽象类当中&#xff0c;可以有抽象方法&#xff0c;或者 非抽象方法!什么是抽象方法&#xff0c;一个方…

基于野马算法优化概率神经网络PNN的分类预测 - 附代码

基于野马算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于野马算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于野马优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神经网络的光滑…

【FPGA】Verilog:计数器 | 异步计数器 | 同步计数器 | 2位二进制计数器的实现 | 4位十进制计数器的实现

目录 Ⅰ. 实践说明 0x00 计数器(Counter) 0x01 异步计数器(Asynchronous Counter)