array go 语言的数组 /切片

内存地址通过&

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.mfbz.cn/a/484930.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux 09】进程优先级

文章目录 &#x1f308; Ⅰ 什么是优先级&#x1f308; Ⅱ 为什么存在优先级&#x1f308; Ⅲ 查看进程优先级&#x1f308; Ⅳ 修改进程优先级 &#x1f308; Ⅰ 什么是优先级 优先级本质 指定进程获取某种资源的先后顺序。在 Linux 中&#xff0c;使用 task_struct 进程控制…

电子电器架构 —— 诊断数据DTC具体故障

电子电器架构 —— 诊断数据DTC具体故障 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣…

【CDA二级数据分析备考思维导图】

CDA二级数据分析备考思维导图 CDA二级复习备考资料共计七个章节&#xff0c;如需资料&#xff0c;请留言&#xff0c;概览如下图&#xff1a;一、数据采集与处理1.数据采集方法2.市场调研和数据录入3、数据探索与可视化4、数据预处理方法 总结&#xff1a;以上为自己学习数据分…

现代化应用部署工具-Docker

Docker 简介 什么是Docker Docker 是一个开源的应用容器引擎&#xff0c;可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上。 Docker部署的优势 通过使用Docker等容器技术&#xff0c;可以将应用程序及其依赖项…

R-Linux 免费ext2 / 3 / 4文件系统恢复软件简介(推荐)

R-Linux&#xff1a;只适合 3种类型的发行版使用。 R-Linux 免费ext2 / 3 / 4文件系统恢复软件简介&#xff08;推荐&#xff09; https://blog.csdn.net/allway2/article/details/102632495 R-Linux for Linux Technical Documentation https://www.r-studio.com/free-linux…

【docker常用命令】

1. 什么是docker Docker 是一种开源的容器化平台&#xff0c;用于开发、交付和运行应用程序。它允许开发人员将应用程序及其依赖项&#xff08;如库、环境变量、配置文件等&#xff09;打包到一个被称为容器的标准化单元中。这个容器包含了一切应用程序需要运行的所有内容&…

漫画之家”系统设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

nodejs+vue高校工作室管理系统python-flask-django-php

系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对高校工作室管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的…

OpenCV4.9.0开源计算机视觉库核心功能(核心模块)

转到&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV 介绍使用 下一篇&#xff1a;如何使用OpenCV扫描图像、查找表和时间测量 ​ OpenCV核心功能主要有以下各个&#xff1a;本文将开始介绍下列内容&#xff1a; Mat - 基…

ubuntu18安装opensips3.4,开启ws/wss/http接口模块

、如果是centos 7安装则使用yum 命令。 添加库地址注意系统类型&#xff0c;选择对应的系统类型和版本 curl https://apt.opensips.org/opensips-org.gpg -o /usr/share/keyrings/opensips-org.gpg echo "deb [signed-by/usr/share/keyrings/opensips-org.gpg] https:/…

client-go中ListAndWatch机制,informer源码详解

文章首发地址&#xff1a; 学一下 (suxueit.com)https://suxueit.com/article_detail/s9UMb44BWZdDRfKqFv22 先上一张&#xff0c;不知道是那个大佬画的图 简单描述一下流程 client-go封装部分 以pod为例 、先List所有的Pod资源&#xff0c;然后通过已经获取的pod资源的最大版…

nodejs+vue高校社团管理系统设计与实现python-flask-django-php

系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对高校社团的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的思想&a…

php搭建websocket

1.项目终端执行命令&#xff1a;composer require topthink/think-worker 2.0.x 2.config多出三个配置文件&#xff1a; 3.当使用php think worker:gateway命令时&#xff0c;提示不支持Windows。 4.打包项目为zip格式 5.打包数据库 6.阿里云创建记录 7.宝塔面板新增站点…

计算机网络⑧ —— IP地址

IP位于TCP/IP参考模型的第三层&#xff0c;也就是⽹络层 ⽹络层的主要作⽤&#xff1a;实现主机与主机之间的通信&#xff0c;也叫点对点通信 问题1&#xff1a;⽹络层(IP)与数据链路层(MAC)有什么关系呢&#xff1f; MAC的作⽤&#xff1a;实现直连的两个设备之间通信。IP的…

Stable diffusion(四)

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

Arduino智能家居

文章目录 一、接线框图1、下载fritzing 二、Arduino IDE 下载三、实现代码 一、接线框图 1、下载fritzing https://github.com/fritzing/fritzing-app/releases打开的软件界面如下&#xff1a; 二、Arduino IDE 下载 官网地址 P.S. 如果upload代码过程中出现cant open de…

【boost_search搜索引擎】1.获取数据源

boost搜索引擎 1、项目介绍2、获取数据源 1、项目介绍 boost_search项目和百度那种不一样&#xff0c;百度是全站搜索&#xff0c;而boost_search是一个站内搜索。而项目的宏观上实现思路就如同图上的思路。 2、获取数据源 我们要实现一个站内搜索&#xff0c;我们就要有这…

SpringBoot配置JWT拦截器

目录 1.背景介绍 2.前提工作 3.具体代码 &#xff08;1&#xff09;相关依赖 &#xff08;2&#xff09;相关配置文件 &#xff08;3&#xff09;JwtUtils类 &#xff08;4&#xff09;准备好登录逻辑代码&#xff08;Dao、Service、Controller&#xff09; &#xff0…

MySQL B树 和B+数据的区别

MySQL B树 和B数据的区别 树分类&#xff1a;二叉树完全二叉树满二叉树堆红黑树 B树B树 首先我们搞清楚数据结构中的 树这个概念 树 分类&#xff1a; 二叉树 限定每个节点的子节点最多只有2个子节点&#xff0c;且有左右之分。完全二叉树 满二叉树 堆 红黑树 B树 B树 …

初识 Redis 浅谈分布式

目 录 一.认识 Redis二.浅谈分布式单机架构分布式是什么数据库分离和负载均衡理解负载均衡数据库读写分离引入缓存数据库分库分表引入微服务 三.概念补充四.分布式小结 一.认识 Redis 在 Redis 官网我们可以看到介绍 翻译过来就是&#xff1a;数以百万计的开发人员用作缓存、…
最新文章