一:数组

数组是一个具有相同类型元素,固定长度的有序集合,一般定义如下:
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):数组,切片和字典的更多相关文章

  1. GoLang基础数据类型--->数组(array)详解

    GoLang基础数据类型--->数组(array)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Golang数组简介 数组是Go语言编程中最常用的数据结构之一.顾名 ...

  2. golang基础--Array数组

    基本特性 格式: var Name [n]<type>,n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数 ...

  3. 换个语言学一下 Golang (6)——数组,切片和字典

    在上面的章节里面,我们讲过Go内置的基本数据类型.现在我们来看一下Go内置的高级数据类型,数组,切片和字典. 数组(Array) 数组是一个具有相同数据类型的元素组成的固定长度的有序集合.比如下面的例 ...

  4. GoLang基础数据类型-切片(slice)详解

    GoLang基础数据类型-切片(slice)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数组的长度在定义之后无法再次修改:数组是值类型,每次传递都将产生一份副本.显然这种数 ...

  5. GoLang基础数据类型--->字典(map)详解

    GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是 ...

  6. golang学习笔记 ---数组与切片

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

  7. [Go] 复合类型(数组、切片、字典、结构体)变量的 初始化 及 注意事项

    Go变量 初始化 对 复合类型(数组.切片.字典.结构体)变量的初始化是,有一些语法限制: 1.初始化表达式必须包含类型标签: 2.左花括号必须在类型尾部,不能另起一行: 3.多个成员初始值以逗号分隔 ...

  8. [golang note] 数组切片

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

  9. golang基础---Slice切片

    切片Slice在go语言中是单独的类型(指向底层的数组),不同于python(对可迭代对象操作的工具),注意区分数组和slice的区别 定义一个空slice,格式var s []int,这种既没有长度 ...

随机推荐

  1. 引用vector里的元素被删除后,引用会怎么样?

    引用的定义不多说,直接看做变量的别名就可以了.有一天写着写着代码,突然想到,如果对vector里某个元素设置引用后,将这个元素从vector里删除会怎么样?我思考了下,认为那个元素会被删除,但是引用还 ...

  2. Codeforces 980 并查集/模拟贪心最小字典序 找规律/数去除完全平方因子 逆思维倍增预处理祖先标记点

    A /*Huyyt*/ #include<bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define pb push_bac ...

  3. AI换脸教程:DeepFaceLab使用教程(1.安装及分解视频)

    首先需要选择合适的DeepFaceLab下载(https://www.deepfacelabs.com/list-5-1.html),然后安装相应的显卡驱动,如果已经准备好这些工作,那么恭喜你,终于开 ...

  4. linux就该这么学.pdf

    链接:https://pan.baidu.com/s/1mhYIqgg 密码:ay0j

  5. TeXstudio设置中文和编码问题

    1 菜单中文显示 2 针对内容中文乱码问题 永久 临时

  6. 【转】h5页面audio不自动播放问题

    1.audio:html5音频标签 <audio loop src="/photo/aa.mp3" id="audio" autoplay preload ...

  7. Bootstrap 中文文档教程

    Bootstrap 中文文档教程 Bootstrap 中文文档教程 全局样式和grid布局—Bootstrap中文使用指南 全局样式1.要求html5文档类型 Bootstrap使用的css属性和ht ...

  8. 京东供应链模式TC转运流程

    TC转运分上门提货和自己送货到网点 上门提货是TC委托第三方货运到商家提货,他们没有装货义务,需要商家自己装货等问题 上门提货简要流程: 采购单创建 商家打单打包出库(自己公司内部建单发货) TC预约 ...

  9. 如何使用dump文件进行调试

    转载[文尾出处链接] 1 简介第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个 ...

  10. FZU 2203 单纵大法好 (二分 && 贪心)

    题意 : 老S最近喜欢上某个搜集战舰的游戏,这个游戏中很重要的一个内容是能编排自己的战舰,通过出击完成任务来获取资源或新的战舰.大家都说老S是一个“直男”,所以他喜欢把战舰排成一条直线.目前老S正准备 ...