Golang基础(3):数组,切片和字典
一:数组
数组是一个具有相同类型元素,固定长度的有序集合,一般定义如下:
var x [5]int
表示数组是一个整数型数组,长度为5
数组的几种定义方式
a: var来定义数组,然后依次赋值
package main
import "fmt"
func main() {
    var x []int
    x[] =
    x[] =
    x[] =
    x[] =
    var sum int
    for _, elem := range x {
        sum += elem
    }
    fmt.Println(sum)
    /**
    我们用range这个go语言内置的方法来遍历数组,其实range也可以用在切片和字典上面
    当你对一个返回值不感兴趣时候,可以用下划线 _ 来忽略这个值
    **/
}
b: 第二种定义方法
package main import "fmt"
func main() {
var x = []int{, , }
x[] =
var sum int
for _, i := range x {
sum += i
}
fmt.Println(sum)
}
c: 第三种定义
//如果我们不能显示知道数组长度,也可以用 ... 来代替长度
func main() {
    var x = [...]string{
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday",    // 这里最后如果没有逗号,那么西面的大括号{要紧挨这个Friday,注意
    }
    for _, day := range x {
        fmt.Println(day)
    }
}
二:切片
上面数组是有固定长度的有序集合,也就是说一段数组长度定义了,你也无法向里面添加元素了。
当元素个数不确定时候,我们又想添加元素进去,这时候数组就不合适了,这时候切片slice登场了
切片和数组类似,切片有一个优点,那就是切片长度是可变的
a: make定义切片
package main
import "fmt"
func main() {
    var arr1 = make([]int, )
    fmt.Println("Capcity:", cap(arr1), "Length:", len(arr1))
    var arr2 = make([]int, , )
    fmt.Println("Captity:", cap(arr2), "Length:", len(arr2))
    for i := ; i < len(arr1); i++ {
        arr1[i] = i
    }
    fmt.Println(arr1)
    for i := ; i < len(arr2); i++ {
        arr2[i] = i
    }
    fmt.Println(arr2)
}
用make定义切片
1:只指定长度,这个时候切片的容量和长度相同
2:另外一种同时指定切片的容量和长度
b: 用数组定义切片
package main
import "fmt"
func main() {
    var arr1 = []int{, , , }
    var s1 = arr1[:]
    var s2 = arr1[:]
    var s3 = arr1[:]
    fmt.Println(s1, s2, s3)
}
c: append给切片追加元素
package main
import "fmt"
func main() {
    var arr1 = make([]int, , )
    for i := ; i < len(arr1); i++ {
        arr1[i] = i
    }
    arr1 = append(arr1, , , , )
    fmt.Println("Capacity: ", cap(arr1), "Length:", len(arr1))
    fmt.Println(arr1)
}
三:字典
字典是一个无序的,键值对的集合
a: 第一种定义:
package main
import "fmt"
func main() {
    var x = map[string]string{
        "A": "apple",
        "B": "banana",
        "O": "orange",
        "P": "pear",
    }
    for key, val := range x {
        fmt.Println("key:", key, "val:", val)
    }
}
b: 第二种make定义
package main
import "fmt"
func main() {
    var x map[string]string
    x = make(map[string]string)
       //上面的2行还可以合成一行 x:=make(map[string]string)
    x["A"] = "apple"
    x["B"] = "banana"
    x["O"] = "orange"
    x["P"] = "pear"
    for key, val := range x {
        fmt.Println("key:", key, "val:", val)
    }
}
Golang基础(3):数组,切片和字典的更多相关文章
- GoLang基础数据类型--->数组(array)详解
		GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ... 
- golang基础--Array数组
		基本特性 格式: var Name [n]<type>,n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数 ... 
- 换个语言学一下 Golang (6)——数组,切片和字典
		在上面的章节里面,我们讲过Go内置的基本数据类型.现在我们来看一下Go内置的高级数据类型,数组,切片和字典. 数组(Array) 数组是一个具有相同数据类型的元素组成的固定长度的有序集合.比如下面的例 ... 
- GoLang基础数据类型-切片(slice)详解
		GoLang基础数据类型-切片(slice)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数组的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本.显然这种数 ... 
- GoLang基础数据类型--->字典(map)详解
		GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是 ... 
- golang学习笔记 ---数组与切片
		数组: golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length). golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量表达式 ... 
- [Go] 复合类型(数组、切片、字典、结构体)变量的 初始化 及 注意事项
		Go变量 初始化 对 复合类型(数组.切片.字典.结构体)变量的初始化是,有一些语法限制: 1.初始化表达式必须包含类型标签: 2.左花括号必须在类型尾部,不能另起一行: 3.多个成员初始值以逗号分隔 ... 
- [golang note] 数组切片
		数组 √ golang数组包含的每个数据称为数组元素(element),数组包含的元素个数被称为数组长度(length). √ golang数组的长度在定义后不可更改,并且在声明时可以是一个常量或常量 ... 
- golang基础---Slice切片
		切片Slice在go语言中是单独的类型(指向底层的数组),不同于python(对可迭代对象操作的工具),注意区分数组和slice的区别 定义一个空slice,格式var s []int,这种既没有长度 ... 
随机推荐
- 通过TCP传送结构体的问题
			这个问题在其他博客中已经给出了解决方案,这里结合自己的Demo说一下. 函数调用的库文件是基于TCP协议的封装,在传送消息体的时候,发送消息结果大体如下: XXXXPost(srcid, EVENT, ... 
- python cv2的视频检测:睁眼闭眼
			如题,想实现一个简单的根据摄像头的某一帧检测睁眼闭眼的功能. 初步的想法是: 1. cv2调用计算机摄像头,读取某一帧的画面. 2. 将该画面作为 哈尔-人脸分类器的输入接口,根据分类器结果返回分类的 ... 
- 摘抄  <关于 作为>
			出路在哪里?出路在于思路! 其实,没有钱.没有经验.没有阅历.没有社会关系,这些都不可怕.没有钱,可以通过辛勤劳动去赚:没有经验,可以通过实践操作去总结:没有阅历,可以一步一步去积累:没有社会关系,可 ... 
- @ResponseBody  注解是什么意思?
			1. @ResponseBody注解的作用是将Controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据 ... 
- 使用python开发WebService
			使用python开发WebService 分类: web linux2009-03-30 11:36 6621人阅读 评论(1) 收藏 举报 webservicepythonsoapimportecl ... 
- 为什么second是秒也是第二?
			起源 早期在西方,一小时分为 60 分钟.后来,科学发达了.文明进步了,人们认为一分钟太粗放了.必须划分得更细致,于是就把一分钟划分成 60 等分.由于是对时间的第二次划分,就将新的 60 等分的“单 ... 
- IDEA mapping箭头要怎么样设置哈(Free MyBatis插件)
			效果如下图: 当我们点击箭头的时候,会快速切换到我们相关联的类位置,就不用再像以前一样还要去找 而 Free MyBatis是一款让我们操作更加方便的插件,你值得拥有哦~~~ idea 选择 File ... 
- 阿里云ECS服务器socket无法连接的问题
			把自己的项目部署到阿里云ecs服务器之后,只有127.0.0.1才能连接到服务器端,检查了阿里云安全组规则,以及socket绑定的地址无误后,发现没有开启服务器防火墙的对应端口. firewall-c ... 
- python-opencv学习第一章
			一.opencv读入图像 retval=cv2.imread(文件名[,显示控制参数]) 常用三个参数如下 CV. IMREAD_UNCHANGED 不改变原先什么样子现在就是什么样子 CV. IMR ... 
- oracle调整链接数
			50用户以下:8GB 混用,oracle 占据1GB~3GB内存,open_cursors:300,processes:10050-100用户:16GB 混用,oracle 占据3~4GB内存,ope ... 
