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 文章索引(持续更新中)3.1 入门3.2 初级3.3 中级3.3 高级 1 背景 最近开始学习AIGC,对Stable Diffusion比较感兴趣,所以新建了这个专栏,来记录自己在使用和学习Stable Diffusion的一些方法、资料以…...
RPC 快速入门
一、What 1)小故事 张三和李四都在同一个家公司负责商品交易的模块,两个人平时开发甚是紧密。 🙋🏻♂️ 张三:“李四,我这边一个商品下单了,但是付款数额不对,你帮我查下支付有没…...
使用Docker搭建Syslog-ng
Syslog-ng是一个可靠、多功能的日志管理系统,用于收集日志并将其转发到指定的日志分析工具。 使用Docker CLI方式搭建 步骤 1: 拉取Syslog-ng镜像 首先,需要从Docker Hub拉取Syslog-ng的官方镜像。 docker pull balabit/syslog-ng:latest步骤 2: 启动…...
使能 Linux 内核自带的 FlexCAN 驱动
一. 简介 前面一篇文章学习了 ALPHA开发板修改CAN的设备树节点信息,并加载测试过设备树文件,文件如下: ALPHA开发板修改CAN的设备树节点信息-CSDN博客 本文是学习使能 IMX6ULL的 CAN驱动,也就是通过内核配置来实现。 二. 使能…...
通过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:模型一次性处理几张图片。一次性多处理图片,模型能够综合捕捉多张图片的特征,最终的成品效果可能会好。但是处理多个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 替换(都得执行) ----# 表示 root 用户,$…...
计算机视觉研究方向
计算机视觉是一个广泛且快速发展的领域,涵盖了多种研究方向和技术。主要的研究方向包括图像处理、目标检测与识别、图像生成、三维视觉、行为识别、深度学习与计算机视觉、多媒体分析、视频理解、风格化、全向视觉传感器等。这些研究方向和技术不断进步,…...
数据分析-Pandas分类数据的比较如何避坑
数据分析-Pandas分类数据的比较如何避坑 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表…...
P - Beat
题目分析 1.看数据范围,大概知道dfs能做 2.自0问题开始查找,确保之后每次查找到的问题的困难度均大于上一次 3.遍历所有情况再记录cnt即可 代码 #include <iostream> #include <algorithm> #include <cstdio> #include <cstring&…...
机器学习——GBDT算法
机器学习——GBDT算法 在机器学习领域,梯度提升决策树(Gradient Boosting Decision Trees,简称GBDT)是一种十分强大且常用的集成学习算法。它通过迭代地训练决策树来不断提升模型性能,是一种基于弱学习器的提升算法。…...
阿里二面:谈谈ThreadLocal的内存泄漏问题?问麻了。。。。
引言 ThreadLocal在Java多线程编程中扮演着重要的角色,它提供了一种线程局部存储机制,允许每个线程拥有独立的变量副本,从而有效地避免了线程间的数据共享冲突。ThreadLocal的主要用途在于,当需要为每个线程维护一个独立的上下文…...
IOS面试题编程机制 46-50
46. 阐述 Method Swizzle(黑魔法),什么情况下会使用?1). 在没有一个类的实现源码的情况下,想改变其中一个方法的实现,除了继承它重写、和借助类别重名方法暴力抢先之外,还有更加灵活的方法 Method Swizzle。 2). Method Swizzle 指的是改变一个已存在的选择器对应的实现…...
web表单标签与练习(3.18)
一、表单域 表单域是一个包含表单元素的区域。 在HTML标签中,< form >标签用于定义表单域,以实现用户信息和传递。 < form >会把它范围内的表单元素信息提交给服务器。 表单属性 action url地址 用于指定接收并处理表单数据的服务器程序的…...
【协议-HTTP】
HTTP协议 HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议。http协议定义web客户端如何才能够web服务器请求web页面,以及服务器如何把web页面传送给客户端。 HTTP 是一种无状态 (stateless) 协议, HTTP协议本身…...
VUE3v-text、v-html、:style的理解
在Vue 3中,v-text、v-html和:style是三个常用的指令,它们各自具有不同的功能和用途。 v-text: v-text用于操作元素中的纯文本内容。它接受一个表达式,并将该表达式的值设置为元素的文本内容。如果元素原本有文本内容,…...
Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略
Dataset之UCI_autos_cars:UCI_autos_imports-85(汽车进口数据集)的简介、安装、案例应用之详细攻略 目录 UCI_autos_imports-85的简介 UCI_autos_imports-85的安装 UCI_autos_imports-85的案例应用 1、训练一个简单的线性回归模型来预测汽车的价格 UCI_autos_i…...
结构体类型详细讲解(附带枚举,联合)
前言: 如果你还对结构体不是很了解,那么本篇文章将会从 为什么存在结构体,结构体的优点,结构体的定义,结构体的使用与结构体的大小依次介绍,同样会附带枚举与联合体 目录 为什么存在结构体: 结构…...
编程生活day1--个位数统计、考试座位号、A-B、计算阶乘和
个位数统计 题目描述: 定一个 k 位整数 Ndk−110k−1⋯d1101d0 (0≤di≤9, i0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N100311,则有 2 个 0,3 个 1,和 …...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
