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

array go 语言的数组 /切片

内存地址通过&

package mainimport "fmt"func main() {var arr [2][3]int16fmt.Println(arr)fmt.Printf("arr的地址是: %p \n", &arr)fmt.Printf("arr[0]的地址是 %p \n", &arr[0])fmt.Printf("arr[0][0]的地址是 %p \n", &arr[0][0])fmt.Printf("arr[1]的地址是 %p \n", &arr[1])fmt.Printf("arr[1][0]的地址是 %p \n", &arr[1][0])//赋值arr[0][0] = 47arr[0][1] = 23arr[1][1] = 45fmt.Println(arr)var arr4 [3][3]int = [3][3]int{{1, 2, 4}, {5, 8, 9}}fmt.Println(arr4)for key, value := range arr4 {for k, v := range value {fmt.Println("arr[%v][%v]=%v", key, k, v)}}fmt.Println()fmt.Println("=========")for i := 0; i < len(arr4); i++ {for j := 0; j < len(arr4[i]); j++ {fmt.Print(arr4[i][j], "\t")}fmt.Println()}
}

普通for循环和建值循环

array的内存分析

地址*2 int16

改数组里面的值是通过指针

package mainimport "fmt"func main() {//实现的功能 给出5个学生的成绩,求出成绩的总和,平局数score1 := 95score2 := 85score3 := 75score4 := 65score5 := 55sum := score3 + score5 + score4 + score1 + score2avg := sum / 5fmt.Println(avg)//150个学生//遍历数组:依次获取数组中的数据range 数组名:index,valuevar scores [5]intscores[0] = 95scores[1] = 85scores[2] = 77scores[3] = 33scores[4] = 66sumscor := 0for i := 0; i < len(scores); i++ {sumscor += scores[i]}avgs := sumscor / len(scores)fmt.Println(avgs)fmt.Println("打印数组-->>", scores)fmt.Printf("打印数组的地址 %p", &scores)fmt.Printf("打印数组的第1个地址 %p", &scores[0])fmt.Printf("打印数组的第2个地址 %p", &scores[1])fmt.Println()fmt.Println("<<<======>>>")//数组初始数据arr := [...]int{6, 2, 3, 4, 5}var arrs1 = [3]int{1, 2, 3}fmt.Println(arrs1)var arrs02 [3]int = [3]int{2, 6, 9}fmt.Println(arrs02)var arr4 = [...]int{2: 66, 0: 1, 3: 44}fmt.Println(arr4)for i := 0; i < len(arr); i++ {fmt.Print(arr[i], "\t")}//如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度://数组初始数据for i := 0; i < 10; i++ {//arr.}//rangesumrr := 0//对字符串 数组都可以遍历for _, value := range arr {fmt.Println(value)sumrr += value}fmt.Println(sumrr)var scorsnum [5]intfor i := 0; i < len(scorsnum); i++ {fmt.Println("开始录入")//录入值改变上边的值用&fmt.Scanln(&scorsnum[i])}fmt.Println(scorsnum)}
package mainimport "fmt"func main() {var arr1 = [3]int{3, 6, 9}fmt.Printf("数组的类型 %T", arr1)var arr2 = [4]int{3, 6, 9, 5}fmt.Printf("数组的类型 %T", arr2)var arr3 = [3]int{3, 6, 9}test1(&arr3)fmt.Println(arr3)arr3[0] = 8fmt.Println(arr3)
}//通过指针可以改数组的值
func test1(arr *[3]int) {(*arr)[0] = 7
}

二维数组内存分析

slice切片构建在数组之上的

package mainimport "fmt"func main() {var intarr [6]int = [6]int{1, 2, 3, 4, 5, 6}//切片是构建在数组之上的//[]动态变化的数组长度不写,int 类型 intarr是原数组//[1:3]切片 -切出的一段片段 - 索引:从1开始 到3结束slice := intarr[1:3]fmt.Println("intarr", intarr)fmt.Println("slice", slice)//切片元素个数fmt.Println("slice元素个数:", len(slice))//获取切片的容量,容量可以动态变化fmt.Println("slice的容量:", cap(slice))
}

切片和数组的地址是相同的

func main() {var intarr [6]int = [6]int{1, 2, 3, 4, 5, 6}//切片是构建在数组之上的//[]动态变化的数组长度不写,int 类型 intarr是原数组//[1:3]切片 -切出的一段片段 - 索引:从1开始 到3结束slice := intarr[1:3]fmt.Println("intarr", intarr)fmt.Println("slice", slice)//切片元素个数fmt.Println("slice元素个数:", len(slice))//获取切片的容量,容量可以动态变化fmt.Println("slice的容量:", cap(slice))fmt.Printf("数组中下标为1位置的地址 %p", &intarr[1])fmt.Printf("切片中下标为0位置的地址 %p", &slice[0])slice[1] = 16fmt.Println("intarr:", intarr)
}

切片的定义

切片可以动态扩容

切片的拷贝

//定义切片var a []int = []int{1, 2, 3, 45}//var b []int = make([]int, 10)//拷贝//将a中的对应数组元素赋值到b中对应的数组中copy(b, a)fmt.Println(b)

map

map创建的方式

	//只声明map内存是没有分配空间//必须通过make函数进行初始化,才会分配空间var a map[int]string//map 可以存放10个键值对a = make(map[int]string, 10)a[200901] = "账上"a[200902] = "tom"fmt.Println(a)b := make(map[int]string)b[200901] = "账上"b[200902] = "tom"c := map[int]string{200901: "toms",200902: "too",}c[200] = "tt"

map增删改查

package mainimport "fmt"func printMap(cityMap map[string]string) {//cityMap 是一个引用传递for key, value := range cityMap {fmt.Println("key = ", key)fmt.Println("value = ", value)}
}func ChangeValue(cityMap map[string]string) {cityMap["England"] = "London"
}func main() {cityMap := make(map[string]string)//添加cityMap["China"] = "Beijing"cityMap["Japan"] = "Tokyo"cityMap["USA"] = "NewYork"//遍历printMap(cityMap)//删除delete(cityMap, "China")//修改cityMap["USA"] = "DC"ChangeValue(cityMap)fmt.Println("-------")//遍历printMap(cityMap)
}

map的获取长度和遍历操作

相关文章:

array go 语言的数组 /切片

内存地址通过& package mainimport "fmt"func main() {var arr [2][3]int16fmt.Println(arr)fmt.Printf("arr的地址是: %p \n", &arr)fmt.Printf("arr[0]的地址是 %p \n", &arr[0])fmt.Printf("arr[0][0]的地址是 %p \n"…...

【Stable Diffusion】专栏介绍和文章索引(持续更新中)

目录 1 背景2 思考3 文章索引&#xff08;持续更新中&#xff09;3.1 入门3.2 初级3.3 中级3.3 高级 1 背景 最近开始学习AIGC&#xff0c;对Stable Diffusion比较感兴趣&#xff0c;所以新建了这个专栏&#xff0c;来记录自己在使用和学习Stable Diffusion的一些方法、资料以…...

RPC 快速入门

一、What 1&#xff09;小故事 张三和李四都在同一个家公司负责商品交易的模块&#xff0c;两个人平时开发甚是紧密。 &#x1f64b;&#x1f3fb;‍♂️ 张三&#xff1a;“李四&#xff0c;我这边一个商品下单了&#xff0c;但是付款数额不对&#xff0c;你帮我查下支付有没…...

使用Docker搭建Syslog-ng

Syslog-ng是一个可靠、多功能的日志管理系统&#xff0c;用于收集日志并将其转发到指定的日志分析工具。 使用Docker CLI方式搭建 步骤 1: 拉取Syslog-ng镜像 首先&#xff0c;需要从Docker Hub拉取Syslog-ng的官方镜像。 docker pull balabit/syslog-ng:latest步骤 2: 启动…...

使能 Linux 内核自带的 FlexCAN 驱动

一. 简介 前面一篇文章学习了 ALPHA开发板修改CAN的设备树节点信息&#xff0c;并加载测试过设备树文件&#xff0c;文件如下&#xff1a; ALPHA开发板修改CAN的设备树节点信息-CSDN博客 本文是学习使能 IMX6ULL的 CAN驱动&#xff0c;也就是通过内核配置来实现。 二. 使能…...

通过dbeaver链接dm8数据库

一、环境说明 windows 11 vmware 17 ubuntu 22 tt:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.3 LTS Release: 22.04 Codename: jammytt:~$ docker info Client:Version: 24.0.5Context: d…...

Stable diffusion(四)

训练自己的Lora 【DataSet】【Lora trainer】【SD Lora trainer】 前置的知识 batch size&#xff1a;模型一次性处理几张图片。一次性多处理图片&#xff0c;模型能够综合捕捉多张图片的特征&#xff0c;最终的成品效果可能会好。但是处理多个batch size也意味着更大的显存…...

oracle 19c RAC补丁升级

1.停止集群件备份家目录 ----两节点分别操作 cd /u01/app/19.3.0/grid/bin/ crsctl stop crstar -zcvf /u01/app.tar.gz /u01/app/u01/app/19.0.0/grid/bin/crsctl start crs2.两节点 GI、DB OPatch 替换&#xff08;都得执行&#xff09; ----# 表示 root 用户&#xff0c;$…...

计算机视觉研究方向

计算机视觉是一个广泛且快速发展的领域&#xff0c;涵盖了多种研究方向和技术。主要的研究方向包括图像处理、目标检测与识别、图像生成、三维视觉、行为识别、深度学习与计算机视觉、多媒体分析、视频理解、风格化、全向视觉传感器等。这些研究方向和技术不断进步&#xff0c;…...

数据分析-Pandas分类数据的比较如何避坑

数据分析-Pandas分类数据的比较如何避坑 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表…...

P - Beat

题目分析 1.看数据范围&#xff0c;大概知道dfs能做 2.自0问题开始查找&#xff0c;确保之后每次查找到的问题的困难度均大于上一次 3.遍历所有情况再记录cnt即可 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring&…...

机器学习——GBDT算法

机器学习——GBDT算法 在机器学习领域&#xff0c;梯度提升决策树&#xff08;Gradient Boosting Decision Trees&#xff0c;简称GBDT&#xff09;是一种十分强大且常用的集成学习算法。它通过迭代地训练决策树来不断提升模型性能&#xff0c;是一种基于弱学习器的提升算法。…...

阿里二面:谈谈ThreadLocal的内存泄漏问题?问麻了。。。。

引言 ThreadLocal在Java多线程编程中扮演着重要的角色&#xff0c;它提供了一种线程局部存储机制&#xff0c;允许每个线程拥有独立的变量副本&#xff0c;从而有效地避免了线程间的数据共享冲突。ThreadLocal的主要用途在于&#xff0c;当需要为每个线程维护一个独立的上下文…...

IOS面试题编程机制 46-50

46. 阐述 Method Swizzle(黑魔法),什么情况下会使用?1). 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写、和借助类别重名方法暴力抢先之外,还有更加灵活的方法 Method Swizzle。 2). Method Swizzle 指的是改变一个已存在的选择器对应的实现…...

web表单标签与练习(3.18)

一、表单域 表单域是一个包含表单元素的区域。 在HTML标签中&#xff0c;< form >标签用于定义表单域&#xff0c;以实现用户信息和传递。 < form >会把它范围内的表单元素信息提交给服务器。 表单属性 action url地址 用于指定接收并处理表单数据的服务器程序的…...

【协议-HTTP】

HTTP协议 HTTP协议(超文本传输协议HyperText Transfer Protocol)&#xff0c;它是基于TCP协议的应用层传输协议。http协议定义web客户端如何才能够web服务器请求web页面&#xff0c;以及服务器如何把web页面传送给客户端。 HTTP 是一种无状态 (stateless) 协议, HTTP协议本身…...

VUE3v-text、v-html、:style的理解

在Vue 3中&#xff0c;v-text、v-html和:style是三个常用的指令&#xff0c;它们各自具有不同的功能和用途。 v-text&#xff1a; v-text用于操作元素中的纯文本内容。它接受一个表达式&#xff0c;并将该表达式的值设置为元素的文本内容。如果元素原本有文本内容&#xff0c…...

Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略

Dataset之UCI_autos_cars&#xff1a;UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略 目录 UCI_autos_imports-85的简介 UCI_autos_imports-85的安装 UCI_autos_imports-85的案例应用 1、训练一个简单的线性回归模型来预测汽车的价格 UCI_autos_i…...

结构体类型详细讲解(附带枚举,联合)

前言&#xff1a; 如果你还对结构体不是很了解&#xff0c;那么本篇文章将会从 为什么存在结构体&#xff0c;结构体的优点&#xff0c;结构体的定义&#xff0c;结构体的使用与结构体的大小依次介绍&#xff0c;同样会附带枚举与联合体 目录 为什么存在结构体&#xff1a; 结构…...

编程生活day1--个位数统计、考试座位号、A-B、计算阶乘和

个位数统计 题目描述&#xff1a; 定一个 k 位整数 Ndk−1​10k−1⋯d1​101d0​ (0≤di​≤9, i0,⋯,k−1, dk−1​>0)&#xff0c;请编写程序统计每种不同的个位数字出现的次数。例如&#xff1a;给定 N100311&#xff0c;则有 2 个 0&#xff0c;3 个 1&#xff0c;和 …...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...