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的获取长度和遍历操作

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

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

相关文章

Express:快速搭建Node.js应用的基石

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Redis技术学习|实战项目记录|商户缓存

学习资料声明 黑马程序员的Redis学习视频&#xff1a;黑马程序员Redis入门到实战教程 需要用到的知识&#xff1a;linux&#xff08;推荐韩顺平老师的教程&#xff0c;学到p30&#xff0c;创建好虚拟机和简单的几个命令就好。&#xff09;SSM。SpringBoot。 还用到了MybatisPl…

mysql基础3索引

存储引擎 存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的&#xff0c;而不是 基于库的&#xff0c;所以存储引擎也可被称为表类型。 1). 建表时指定存储引擎 CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ] ,......字段n…

nodejs+vue高校失物招领平台python-flask-django-php

时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;高校失物招领平台当然不能排除在外。高校失物招领平台是在实际应用和软件工程的开发原理之上&#xff0c;运用nodejs语言以及express框架进行开发…

机器学习——GBDT算法

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

微信小程序Skyline搜索框吸顶到navtab胶囊位置,丝滑Q弹动画

进入下面小程序可以体验效果&#xff1a; 基于官方原版demo加入了回弹动画 WXML: <scroll-viewclass"scroll-area"type"custom"scroll-yshow-scrollbar"{{false}}"worklet:onscrollend"handleScrollEnd"worklet:onscrollupdate&q…

正弦实时数据库(SinRTDB)简介

正弦实时数据库是长沙巨松软件科技有限公司为了解决工业传感器产生的海量数值型数据的存储、计算等需求而研发的产品。广泛应用于电力、冶金、石油、化工、燃气等多个领域。 正弦实时数据库的主要特点如下&#xff1a; 性能 单机支持管理一百万标签点。单机支持并发用户数超…

【教学类-50-01】20240324 “逻辑思维-得到APP”题目《七位考生上场排序》

作品展示&#xff1a; 背景需求&#xff1a; 2024年3月22日得到发布一道测试题&#xff0c;作为报名入门题&#xff08;营销题&#xff09; 母亲是逻辑思维得到APP的用户&#xff0c;她让我动脑做一下 我觉得可以用python写个代码做一下 通过排除法&#xff0c;获得72种符合问…

C++之移动语义与智能指针

目录 移动语义 1、几个基本概念的理解 2、复制控制语义的函数 3、移动控制语义的函数 3.1、移动构造函数: 3.2、移动赋值函数 4.区别 5、std::move函数 6.代码演示: 资源管理与智能指针 一、C语言中的问题 二、C的解决办法(RAII技术)&#xff1a; 三、四种智能指针…

就业班 第二阶段 2401--3.19 day4 主从复制

一、MySQL-Replication&#xff08;主从复制&#xff09; 1.1、MySQL Replication 主从复制&#xff08;也称 AB 复制&#xff09;允许将来自一个MySQL数据库服务器&#xff08;主服务器&#xff09;的数据复制到一个或多个MySQL数据库服务器&#xff08;从服务器&#xff09;…

【项目设计】基于MVC的负载均衡式的在线OJ

项目代码&#xff08;可直接下载运行&#xff09; 一、项目的相关背景 学习编程的小伙伴&#xff0c;大家对力扣、牛客或其他在线编程的网站一定都不陌生&#xff0c;这些编程网站除了提供了在线编程&#xff0c;还有其他的一些功能。我们这个项目只是做出能够在线编程的功能。…

Priority Queue实现栈和队列

在排序算法中&#xff0c;堆排序利用了完全二叉树形式的堆结构&#xff0c;结合了插入排序与合并排序的优点&#xff0c;能够以 O ( n log ⁡ n ) O(n\log{n}) O(nlogn)的时间完成排序。优先级队列是可基于堆结构进行实现的一种数据结构&#xff0c;在计算机系统中可以用来记录…