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, 2
pfArr := [...]*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语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
随机推荐
- 路由刷rom手册
最近对家里面那5,6个路由器下手了. 路由列表:小米mini 2台. 优酷路由宝l1,tp wdr3320,tp wr840n, 友华wr1200js,小米路由r1n 步骤: 1. 想办法开启ssh ...
- 如何将外部数据库 导入到系统的SQL中
打开数据库sql管理 在数据库中新建查询 如何输入: exec sp_attach_db @dbname='YourDataBaseName', @filename1='mdf文件路径', @fi ...
- Powershell-创建Module
1.找到默认module路径,ISE启动时自动加载默认领下的Module代码. $env:PSModulePath 2.在其中一个默认路径下创建个文件夹,在文件夹下创建一个.psm1后缀文件,注意文件 ...
- 在chrome 怎么通过ajax请求加载本地文件
在chrome下面用Jquery 的load方法加载本地的html文件时会报错 我百度了一下是因为 谷歌浏览器内核为了安全机制,不允许这样方式访问其他页面,但是可以通过加 --enable-file- ...
- fastjson SerializerFeature详解
- Web后台快速开发框架
Web后台快速开发框架 Coldairarrow 目录 目录 第1章 目录 1 第2章 简介 3 第3章 基础准备 4 3.1 开发环境要求 4 3.2 ...
- 完全自主创建Wrapper Tomcat容器
Wrapper Tomcat 使用说明1. Wrapper Tomcat 简介1) Wrapper Tomcat 是使用Apache Tomcat 整合 Java Service Wrapper 的一 ...
- 关于 Be 主
大三在校生 每天不定刷 Leetcode POJ HDU 以及其他算法专题 自己很菜 还没有能力可以帮助别的旁友解决问题 :-( 毕竟有个人每天看着你写代码还是很幸福的事情呢 还是要骄傲夸一下 FH ...
- Java8新特性(一)_interface中的static方法和default方法
什么要单独写个Java8新特性,一个原因是我目前所在的公司用的是jdk8,并且框架中用了大量的Java8的新特性,如上篇文章写到的stream方法进行过滤map集合.stream方法就是接口Colle ...
- hdu-4635(tarjan缩点)
题意:先给你一个n个点,m条边的有向图,问你最多能够增加多少条边,使得这个图不是一个强连通图 解题思路:考虑最多要添加的边数,所以如果能把初始图划分成两个部分,每个部分都是完全图,这两个部分分别用单向 ...