一、数组(类似python的list)

数组的长度一旦定义了就不能动态增长。并且存储的数据类型必须相同。

创建方法:

var 数组名 [长度]数据类型

例如:

package main
import "fmt" func main(){
var l [5]int //定义l名字,长度为5,数据类型为int的数组
l[0] = 1 //赋值
l[1] = 2
l[2] = 3
l[3] = 4
fmt.Println(l)
fmt.Println(l[2])
fmt.Println(l[1:3]) //输出1到3的数组
fmt.Println(l[0:]) //0到结尾
fmt.Println(l[:3]) //0到3 } ##结果##
[1 2 3 4 0]
3
[2 3]
[1 2 3 4 0]
[1 2 3]

  

数组的四种初始化方式

例如:

var s1 [3]int = [3]int{1,2,3}
fmt.Println("s1",s1)
var s2 [4]int = [...]int{5,6,7,8} //[...]是固定写法
fmt.Println("s2",s2)
var s3 = [2]int{9,10} //第一种的简化
fmt.Println("s3",s3)
var s4 = [...]int{3:43,1:41,0:40,2:42} //类似键值对
fmt.Println("s4",s4) ##结果##
s1 [1 2 3]
s2 [5 6 7 8]
s3 [9 10]
s4 [40 41 42 43]

  

数组的遍历

例如:

var s4 = [...]int{3:43,1:41,0:40,2:42} //类似键值对
fmt.Println("s4",s4) for index,value := range s4{
fmt.Println(index,value)
} #结果##
0 40
1 41
2 42
3 43

  

二、slice切片

1、切片是数组的引用
2、切片的使用类似数组,如遍历
3、切片的长度是可变的

创建语法
var 切片名 []类型
如:

var qiepian []int

  

切片例子:

###例子一
var suzhu [4]int = [...]int{5,6,7,8}
slice := suzhu[1:4] //1到4的值,不包含4
fmt.Println(suzhu)
fmt.Println(slice)
fmt.Println("切片的容量",cap(slice)) ##结果
[5 6 7 8]
[6 7 8]
切片的容量 3 ###例子二、使用make创建切片
var slice []int = make([]int,4,10) //类型,大小(长度),容量(可选),容量必须大于长度
slice[0] = 10
slice[1] = 11
fmt.Println(slice) ##结果##
[10 11 0 0] ###例子三
var slice []int = []int {2,4,6}
fmt.Println(slice) ##结果##
2 4 6

切片的append追加

例如:

var slice []int = []int {2,4,6}
fmt.Println(slice)
//使用append直接追加切片内容(类似python list的append)
slice = append(slice,8,10)
fmt.Println(slice)
slice = append(slice,slice...) //追加切片,...是固定写法
fmt.Println(slice) ###结果###
[2 4 6]
[2 4 6 8 10]
[2 4 6 8 10 2 4 6 8 10]

  

切片的copy操作

使用copy内置函数

例如:

var slice []int = []int {2,4,6}
fmt.Println(slice)
var slice2 []int = make([]int,5)
fmt.Println(slice2)
copy(slice2,slice) //将slice复制给slice2
fmt.Println(slice)
fmt.Println(slice2 ##结果##
[2 4 6]
[0 0 0 0 0]
[2 4 6]
[2 4 6 0 0]

  

使用切片改变字符串的内容

例子:

var str string = "hello"
fmt.Println(str)
arr := []byte(str)
arr[1] = 'a' //转成字符串
arr1 := []rune(str) //中文转换
arr1[0] = '狗'
fmt.Println(arr)
str = string(arr)
fmt.Println(str)
str = string(arr1)
fmt.Println(str) ##结果##
hello
[104 97 108 108 111]
hallo
狗ello

  

map(类似python的dict)

map是key-value数据结构(类似python的dict)
map是无序存储的

创建map语法

var map 变量名 map[keytype]valuetype

如:

var m1 map[string]string
var m2 map[string]int
var m3 map[int]string
var m4 map[string]map[string]string

  

使用例子:

package main
import "fmt" func main(){
var m1 map[string]string
//在使用map前,需要先make,make的作用技术给map分配数据空间
m1 = make(map[string]string)
m2 := map[string]string{ //使用方式二
"a1" : "q1",
"a2" : "a2",
}
m1["s1"] = "亚索"
m1["s2"] = "盖伦"
fmt.Println(m1)
fmt.Println(m1["s1"])
fmt.Println(m2)
} ###结果###
map[s1:亚索 s2:盖伦]
亚索
map[a1:q1 a2:a2]

  

map的增删改查

增、改

map[key] = value //没有就增加,存在就修改

delete(map,key)

map[key]   //对应的value,和python的dict一样

golang 数组、切片、map的更多相关文章

  1. Go语言学习笔记(三)数组 & 切片 & map

    加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 数组 Arrays 数组是同一种数据类型的固定长度的序列. 数组是值类型,因此改变副本的值,不会改变本身的值: 当 ...

  2. Go语言学习之4 递归&闭包&数组切片&map&锁

    主要内容: 1. 内置函数.递归函数.闭包2. 数组与切片3. map数据结构4. package介绍 5. 排序相关 1. 内置函数.递归函数.闭包 1)内置函数 (1). close:主要用来关闭 ...

  3. golang(4):函数 & 数组 & 切片 & map & 锁

    内置函数 // 1. close:主要用来关闭channel // 2. len:用来求长度,比如string.array.slice.map.channel // 3. new:用来分配内存,主要用 ...

  4. go语言学习-数组-切片-map

    数组 go语言中数组的特点: 数组的长度是固定的,并且长度也是数组类型的一部分 是值类型,在赋值或者作为参数传递时,会复制整个数组,而不是指针 定义数组的语法: var arr1 = [5]int{1 ...

  5. Golang 数组 切片 字典 基本知识点

    数组 数组的声明 var arrayName [arraySize]dataType eg: var array1 [5]int 在声明数组时,必须指定数组名,数组长度和数组元素的类型. 数组的初始化 ...

  6. GoLang数组切片

    1. 数组1.1 如何定义数组同java数组一样,数组是一组内存连续且类型相同的数据组成 //不初始化初始值默认为0 var arr1 = [5]int{} var arr2 = [5]int{1,2 ...

  7. [golang note] 数组切片

    数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length). √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量 ...

  8. golang中不定参数与数组切片的区别

    package main import "fmt" func main() { myfunc1(, , , ) //传递不定数量的参数 myfunc2([], , , }) //传 ...

  9. 窥探Swift之数组安全索引与数组切片

    今天是元宵节,祝大家元宵节快乐!在Swift中的数组和字典中下标是非常常见的,数组可以通过索引下标进行元素的查询,字典可以通过键下标来获取相应的值.在使用数组时,一个常见的致命错误就是数组越界.如果在 ...

  10. Go-常识补充-切片-map(类似字典)-字符串-指针-结构体

    目录 Go 常识补充 Go 命名 打印变量类型科普 _ 关键字 命名规范相关 包目录规范 切片 多维切片 切片初始化的方法 多维切片初始化 切片删除元素(会略微影响效率 ,少用) copy 函数 打散 ...

随机推荐

  1. 学JAVA第三天,JAVA第二章《JAVA数据类型》

    ---恢复内容开始--- <JAVA数据类型> 我们一般都用int类型,因为int类行一般的日常生活的数据都能满足了. 当然,想李嘉诚,马云这种有钱人,int类行就不能满足帮他记钱的了,像 ...

  2. Java开发笔记(二)Java工程的帝国区划

    上一篇文章介绍了如何运行了第一个Java程序“Hello World”.然而这个开发环境看起来那么陌生,一个个名字符号完全不知道它们是干啥的呀,对于初学者来说,好比天书一般,多看几眼感觉都要走火入魔了 ...

  3. 【转】Android 之最新最全的Intent传递数据方法

    原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...

  4. 原生js获取元素非行内样式属性的方法

    获取当前对象的样式DOM标准中的全局方法 getComputedStyle(obj).width (获取元素的宽度),但在非标准IE浏览器(IE8)以下有兼容问题IE8以下要这样写 obj.curre ...

  5. SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证?

    SAP MM盘点流程里如何处理事务代码MI11 Recount过的盘点凭证? 1, MI01 create a physical inventory document, 2, MI04 to inpu ...

  6. C# 使用NPOI出现超过最大字体数和单元格格式变成一样的解决

    在使用NPOI写入Excel文件的时候出现“它已经超出最多允许的字体数”,查询资料发现是字体创建太多的原因,需要将常用字体创建好,传入CellStyle中.参考(http://www.cnblogs. ...

  7. Android远程桌面助手扩展之微信跳一跳辅助

    微信跳一跳的外挂辅助已是五花八门,万能的TB上也有了各种明码标价的代练.微信小程序游戏的火爆甚至带火了手游外挂产业.另一方面,跳一跳游戏也在不断更新,防止使用外挂刷高分.Android远程桌面助手支持 ...

  8. No module named "Crypto",如何安装Python三方模块Crypto

    前两天公司公司老总让我研究怎么用企业微信第三方应用进行官网对接,完成URL回调验证问题. 具体如何进行Python 的Django网站与企业微信第三方应用进行回调验证的博客地址为:https://ww ...

  9. 如何利用MongoDB打造TOP榜小程序

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云数据库 TencentDB发表于云+社区专栏 今天我分享的主题内容大概是两部分,最主要的还是小游戏和小程序,第一部分就是跟大家分 ...

  10. linux内核调试技巧之一 dump_stack【转】

    在内核中代码调用过程难以跟踪,上下文关系复杂,确实让人头痛 调用dump_stack()就会打印当前cpu的堆栈的调用函数了. 如此,一目了然的就能看到当前上下文环境,调用关系了 假设: 遇到uvc_ ...