go语言基础知识笔记(二)之数组和切片
数组和切片知识用的也是比较多,的给我们工作带来很大的便利
(一) 数组
定义:在golang中数组的长度是不可变,数组存放要求是同一种数据类型
//golang中数组定义的四种方法
1.先声明,后赋值
var arr1 [2]int
arr1[0]=1
arr1[1]=2
2.声明同时赋值
var arr2 = [2]int{1,2}
//或者
arr2 := [2]int{1,2}
3.不指定长度程序自动计算长度
var arr = [...]int{1,2}
//或者
arr := [...]int{1,2}
4.key和value的形式
var arr = [...]int{1:1,0:2}
//或者
arr := [...]int{1:1,0:2}
//golang中数组遍历的两种方法
1.常规方法
for i:=0;i<len(arr);i++ {
fmt.Printf("arr[%d] = %v",i,arr[i])
}
2.高级方法(推荐使用)
for key(_),value:= range arr{
fmt.Printf("arr[%d] = %v",i,arr[i])
}
//动态修改数组的值,默认情况下数组是值传递 //形参定义成一个指针数据类型
func T2(a *[]string) {
*a[] = //修改原来的值
} func main() {
s1 := [...]string{,}
T2(&s1) //传递一个数组的地址作为实际参数
s1 = append(s1 , "33")
fmt.Println(s1)
}
//数组指针和指针数组
1.数组指针即是一个指针并且这个指针保存了一个指向数组的地址
var arr = [...]int{5:2}
//数组指针
var pf *[6]int = &arr
2.指针数组即是一个数组,数组里面保存很多指针x,y := 1, 2pfArr := [...]*int{&x,&y}
//多维数组(二维)
1.多维数组即数组里面又是一个数组
2.定义方法
2.1先定义再赋值
var arr1 [2][2]int
arr1[0][0] = 5.....
2.2定义的同时赋值
var arr2 [2][2]int = [2][2]int{{1,2,3},{3,4,5}}
3.多维数组的遍历
3.1
for i:=0;i<len(arr);i++{
for j:=0;i<len(arr[i]);j++{
}
}
3.2
for i;value1 :=range arr2{
for j;value2 :=range value1 {
}
}
(二) 切片
切片是数组的引用,并且是动态的数组,长度可以变化.
//切片的定义的几种方法
.数组的引用
var intArr [4]int = [...]{12,34,44,33,11}
slice := intArr[1:3]
2.make定义
var slice []type = make([]type,len,[cap])
3.常规用法
var slice []type = []type{value1,value2,value3}
遍历的方法和数组也是一样的就不继续啰嗦了
//切片的内置函数
.动态添加切片
append(切片,value1,value2,value3)
.切片的copy
copy(切片1,切片2)
//字符的切片
1.字符的切片在某种情况下是不可变的
2.想要修改字符串中的值[]byte(str)[这种是处理英文方式],[]rune(str)[这种是处理中文方式]
go语言基础知识笔记(二)之数组和切片的更多相关文章
- CSS基础知识笔记(二)之选择器
CSS选择器 选择器{ 样式; } 每一条css样式声明(定义)由两部分组成,形式如下: 在{}之前的部分就是“选择器”,“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元 ...
- HTML基础知识笔记(二)
HTML <img>标签 语法: <img src="图片地址" alt="下载失败时的替换文本" title = "提示文本&qu ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- ios开发学习笔记001-C语言基础知识
先来学习一下C语言基础知识,总结如下: 在xcode下编写代码. 1.编写代码 2.编译:cc –c 文件名.c 编译成功会生成一个 .o的目标文件 3.链接:把目标文件.o和系统自带的库合并在一起, ...
- Java基础复习笔记系列 四 数组
Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
- Java多线程基础知识笔记(持续更新)
多线程基础知识笔记 一.线程 1.基本概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是 ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
随机推荐
- DataPipeline创始人&CEO 陈诚:沃森与AI
引言:本文来自infoQ架构师电子月刊对DataPipeline创始人&CEO陈诚的约稿.陈诚,毕业于上海交大,留学于美国密西根大学,前Yelp大数据研发工程师,曾就职于美国Google.Ye ...
- mysql7笔记----存储过程实例
mysql创建存储过程 DROP PROCEDURE IF EXISTS getCreateTimes /*前面要写DELIMITER $$ 或DELIMITER // */ DELIMITER $$ ...
- cvc-elt.1: Cannot find the declaration of element 'beans'Failed to read schema document 'http://www.springframework.org/schema/beans/spring- beans-3.0.xsd'
Multiple annotations found at this line: - cvc-elt.1: Cannot find the declaration of element 'beans' ...
- redis数据库安装 redis持久化及主从复制
----------------------------------------安装redis-5.0.4---------------------------------------- wget h ...
- java学习入门之---使用idea创建第一个maven项目
一.准备条件: 1.安装idea旗舰版 2.安装tomcat 二.打开idea开始创建 1.创建Project 2.选择项目类型为maven 3.输入组名和项目名 ---> 下一步 ----&g ...
- 2013年山东省赛F题 Mountain Subsequences
2013年山东省赛F题 Mountain Subsequences先说n^2做法,从第1个,(假设当前是第i个)到第i-1个位置上哪些比第i位的小,那也就意味着a[i]可以接在它后面,f1[i]表示从 ...
- FreeMarker 入门
目录 FreeMarker是什么 为什么要学习FreeMarker FreeMarker相关站点
- MongoDB 4.0.* 远程连接及用户名密码认证登陆配置——windows
- 前端知识之Ajax
Asynchronous JavaScript and XML 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新.是在不重新加载整个页面的情况下,与服务器交换数据并异步更新部分网页 ...
- 执行Git命令时出现各种 SSL certificate problem 的解决办法
执行Git命令时出现各种 SSL certificate problem 的解决办法 来源 https://www.cnblogs.com/chenzc/p/5842932.html 比如我在win ...