array go 语言的数组 /切片

news2024/9/23 19:57:50

内存地址通过&

package main

import "fmt"

func main() {
	var arr [2][3]int16
	fmt.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] = 47
	arr[0][1] = 23
	arr[1][1] = 45
	fmt.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 main

import "fmt"

func main() {
	//实现的功能 给出5个学生的成绩,求出成绩的总和,平局数
	score1 := 95
	score2 := 85
	score3 := 75
	score4 := 65
	score5 := 55
	sum := score3 + score5 + score4 + score1 + score2
	avg := sum / 5
	fmt.Println(avg)

	//150个学生
	//遍历数组:依次获取数组中的数据range 数组名:index,value
	var scores [5]int
	scores[0] = 95
	scores[1] = 85
	scores[2] = 77
	scores[3] = 33
	scores[4] = 66
	sumscor := 0
	for 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.
	}
	//range
	sumrr := 0
	//对字符串 数组都可以遍历
	for _, value := range arr {
		fmt.Println(value)
		sumrr += value
	}
	fmt.Println(sumrr)

	var scorsnum [5]int
	for i := 0; i < len(scorsnum); i++ {
		fmt.Println("开始录入")
		//录入值改变上边的值用&
		fmt.Scanln(&scorsnum[i])
	}
	fmt.Println(scorsnum)

}
package main

import "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] = 8
	fmt.Println(arr3)
}

//通过指针可以改数组的值
func test1(arr *[3]int) {
	(*arr)[0] = 7
}

二维数组内存分析

slice切片构建在数组之上的

package main

import "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] = 16
	fmt.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 main

import "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.coloradmin.cn/o/1542593.html

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

相关文章

通过命令在Windows入站出站放行上放行端口8090, 8443, 5222, 8021

可以通过循环结构来简化操作&#xff0c;下面分别创建入站和出站规则的示例&#xff1a; 入站规则 $ports 8090, 8443, 5222, 8021foreach ($port in $ports) {New-NetFirewallRule -DisplayName "Allow Inbound Port $($port)" -Direction Inbound -Action Allow…

【协议-HTTP】

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

基于前端技术实现的全面预算编制系统

前言 在现代商业环境中&#xff0c;预测销售数据和实际成本是每个公司CEO和领导都极为重视的关键指标。然而&#xff0c;由于市场的不断变化&#xff0c;准确地预测和管理这些数据变得愈发具有挑战性。为了应对这一挑战&#xff0c;建立一个高效的系统来管理和审查销售数据的重…

发电机回收公司哪家靠谱?二手房发电机回收公司排名榜

在当今这个能源日益紧张的时代&#xff0c;发电机的存在依然有着不可替代的重要地位。然而&#xff0c;随着科技的不断进步&#xff0c;老旧或退役的发电机往往会被淘汰。这时&#xff0c;选择一家可靠的发电机回收公司就显得尤为重要。本文将为您解析发电机回收行业的现状&…

曲线生成 | 图解Reeds-Shepp曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Reeds-Shepp曲线&#xff1f;2 Reeds-Shepp曲线的运动模式3 Reeds-Shepp曲线算法原理3.1 坐标变换3.2 时间翻转(time-flip)3.3 反射变换(reflect)3.4 后向变换(backwards) 4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f5…

Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(三)

概览 承接上一篇博文: Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(二)我们在其中讨论了如何使用第三方强大通用的钩子库 SwiftHook 来协助我们完成 NSObject 构造器 init 的 SWIZZ 操作。我们还讨论了为什么用 print 打印对象信息时会发生崩溃…

新手摄影笔记-基础知识-按键和参数说明【1】

1. 相机正反面 2.顶部 3.屏幕 4.光圈、快门、感光度 什么是景深呢&#xff1f;景深就是照片中清晰和模糊的范围&#xff0c;也就是前后的距离。景深越深&#xff0c;意味着照片中清晰的范围越大&#xff0c;前后的距离越长&#xff0c;背景越清晰。景深越浅&#xff0c;意味着照…

个人博客系列-后端项目-系统角色配置(8)

系统角色配置需要设置的接口 用户可以绑定多个角色&#xff0c;角色对应有多个路由权限。用户绑定角色后&#xff0c;可以访问当前角色下的各个api路由和菜单路由。 用户注册时设置用户角色修改用户角色&#xff08;同时对应用户可以访问的路由将会同步变更&#xff09;添加修…

vue3如何二次封装el-upload组件进行图片上传及删除

实现功能&#xff1a; 1、封装el-upload组件&#xff0c;父组件可以控制图片上传框的宽高 2、父组件可以传入提示信息&#xff0c;利用具名插槽 3、上传前的校验 4、实现删除功能 不同配置下的效果&#xff1a; 父组件引用&#xff1a; <script setup lang"ts"…

Linux的介绍以及其发展历史

文章目录 前言一、技术是推动社会发展的基本动力1.人为什么能成为万物之长呢&#xff1f;2.人为什么要发明工具&#xff0c;进行进化呢&#xff1f;3.人是如何发明工具的&#xff1f;4.为什么要有不同的岗位和行业&#xff1f; 二、计算机(操作系统)发展的基本脉络1.第一台计算…

酷炫的粒子动态表白HTML源码

源码介绍 酷炫的粒子动态表白HTML源码&#xff0c;自己自定义文字&#xff0c;动态组合文字&#xff0c;进行表白&#xff0c;喜欢的朋友可以下载使用&#xff0c;很不错的表白HTML代码 下载地址 酷炫的粒子动态表白HTML源码

Set A Light 3D Studio中文--- 打造专业级3D照明效果

Set A Light 3D Studio是一款专业的灯光模拟软件&#xff0c;专为摄影师和电影制片人打造。它允许用户在计算机上模拟并预览各种布光效果&#xff0c;助力拍摄出真实、精准且具有艺术感的作品。软件提供了丰富的灯光和场景模型&#xff0c;用户可以灵活调整光源参数&#xff0c…

优化金融展厅设计,细节提升客户体验与实用效能

“很赚钱”大部分公众对金融行业的第一印象&#xff0c;这足以见得金融行业在社会经济发展中的重要性&#xff0c;而为了更好的宣传和科普金融相关信息&#xff0c;金融展厅的设计和建设成为了重要措施&#xff0c;它能够充分展示金融机构的实力、品牌形象和服务优势&#xff0…

使用Django实现信号与消息通知系统【第154篇—Django】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Django实现信号与消息通知系统 在Web应用程序中&#xff0c;实现消息通知系统是至关重…

【Hadoop大数据技术】——Hadoop高可用集群(学习笔记)

&#x1f4d6; 前言&#xff1a;Hadoop设计之初&#xff0c;在架构设计和应用性能方面存在很多不如人意的地方&#xff0c;如HDFS和YARN集群的主节点只能有一个&#xff0c;如果主节点宕机无法使用&#xff0c;那么将导致HDFS或YARN集群无法使用&#xff0c;针对上述问题&#…

网络协议栈--传输层--UDP/TCP协议

目录 本节重点一、再谈端口号1.1 再谈端口号1.2 端口号范围划分1.3 认识知名端口号(Well-Know Port Number)1.4 回答两个问题1.5 netstat1.6 pidof 二、UDP协议2.1 UDP协议段格式2.2 UDP的特点2.3 面向数据报2.4 UDP的缓冲区2.5 UDP使用注意事项2.6 基于UDP的应用层协议2.7 UDP…

【Linux】nmcli命令详解

目录 ​编辑 一、概述 二、常用参数使用 2.1 nmcli networking 1.显示NM是否接管网络 2.查看网络连接状态 3.开/关网络连接 2.2 general ​编辑 1.显示系统网络状态 2.显示主机名 3.更改主机名 2.3 nmcli connection ​编辑1.显示所有网络连接 2.显示某个网卡的…

基于ssm的酒店民宿管理系统的设计与实现

系统主要功能介绍&#xff1a; 1、登录&#xff1a;输入账号密码进行登录&#xff0c;登录后才能进行相应的操作 2、客房管理&#xff1a;客房管理主要是酒店预订&#xff0c;可以选择不同的房间&#xff0c;比如大床房&#xff0c;家庭房等&#xff0c;入住办理&#xff0c;…

DC电源模块的设计与调试技巧

BOSHIDA DC电源模块的设计与调试技巧 DC电源模块的设计与调试是电子工程师在实际项目中常常需要面对的任务。一个稳定可靠的DC电源模块对于电路的正常运行起到至关重要的作用。以下是一些设计与调试的技巧&#xff0c;帮助工程师们更好地完成任务。 第一&#xff0c;正确选择…

【项目管理后台】Vue3+Ts+Sass实战框架搭建二

Vue3TsSass搭建 git cz的配置mock 数据配置viteMockServe 建立mock/user.ts文件夹测试一下mock是否配置成功 axios二次封装解决env报错问题&#xff0c;ImportMeta”上不存在属性“env” 统一管理相关接口新建api/index.js 路由的配置建立router/index.ts将路由进行集中封装&am…