Golang slice和map的申明和初始化
1 前言
仅供记录使用。
2 代码
/**
* @Author: FB
* @Description:
* @File: SliceMapInit.go
* @Version: 1.0.0
* @Date: 2019/7/5 14:39
*/ package main import "fmt" func main(){
InitSlice()
InitMap()
} func InitSlice(){
//三个等价
var a []int
var a1 = []int{}
var b = make([]int,0)
var b2 = make([]int,0,0) //报错
//a[0] = 1
//b[0] = 2
showVals(a,a1,b,b2)
showVals("---------end 1---------")
//三个等价
var c = []int{0,0,0}
var d = make([]int,3)
var d2 = make([]int,3,3) var d3 = make([]int,3,5) c[0] = 1
d[0] = 2
showVals(c,d,d2)
showVals("---------end 2---------") //报错,因为长度只有3
//d[3] = 3
showVals(d,len(d),cap(d)) //报错,因为长度只有3
//d3[3] = 3
showVals(d3,len(d3),cap(d3))
showVals("---------end 3---------") //append 以上两种情况都可以
a = append(a,1,2,3)
b = append(b,1,2,3)
d = append(d,1,2,3)
d3 = append(d3,1,2,3)
showVals("a",a,len(a),cap(a))
showVals("b",b,len(b),cap(b))
showVals("d",d,len(d),cap(d))
showVals("d3",d3,len(d3),cap(d3)) } func InitMap(){
var a map[string]string
showVals(a)
// add these lines:
/*
myGreeting["Tim"] = "Good morning."
myGreeting["Jenny"] = "Bonjour."
*/
// and you will get this:
// panic: assignment to entry in nil map //OK
var b = make(map[string]string)
//等价写法shorthand_make
//b := make(map[string]string) //init
b["Tim"] = "Good morning."
b["Jenny"] = "Bonjour."
showVals(b) //OK
c := map[string]string{}
//init
c["Tim"] = "Good morning."
c["Jenny"] = "Bonjour."
showVals(c) //init
c1 := map[string]string{
"Tim": "Good morning!",
"Jenny": "Bonjour!",
} c1["FB"] = "Hi"
c1["Jenny"] = "Hello"
c1["Jenny2"] = "Hello2" showVals(c1,len(c1))
delete(c1,"Jenny2")
showVals(c1) //key := "FB2"
key := "FB"
if val, exists := c1[key];exists{
showVals(val)
delete(c1,key)
showVals(c1)
}else{
showVals("no found",key)
} //遍历
for key, val := range c1 {
fmt.Println(key, " - ", val)
} } func showVals(vals ...interface{}){
for _,v :=range vals{
fmt.Print(v,"\t")
}
fmt.Println()
}
Golang slice和map的申明和初始化的更多相关文章
- 高级数据类型(arrary、slice、map、ptr)
高级数据类型: 高级数据类型有数组.切片.map.指针.结构体.函数.接口.通道等,本文只介绍Arrary.Slice.map.ptr. 数组: (1)概念: 数组是同一种数据类型的集合.数组从声明时 ...
- Golang高效实践之array、slice、map
前言 Golang的slice类型为连续同类型数据提供了一个方便并且高效的实现方式.slice的实现是基于array,slice和map一样是类似于指针语义,传递slice和map并不涉及底层数据结构 ...
- go基础之基本数据结构(数组、slice、map)
go基本的数据结构有数组.slice.map,高级数据结构为结构体为用户自定义类型.本片文章主要讲解三大基本数据结构. 数组 slice Map 数组 数组是包含单个类型的元素序列,但是长度固定的数据 ...
- go 数组(array)、切片(slice)、map、结构体(struct)
一 数组(array) go语言中的数组是固定长度的.使用前必须指定数组长度. go语言中数组是值类型.如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址. 声明 ...
- go语言的 数组、slice、map使用(转)
golang群 点击加入 go语言的 数组.slice.map使用, 由于网上有很好的说明, 不需要再写了,请看这几篇: Go语言中的 Array, Slice和 Map 深入学习golang五篇,以 ...
- Go语言—— Array,Slice,Map 和 Set
转自:https://se77en.cc/ Array(数组) 内部机制 在 Go 语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素可以是内建类型,像数字和字符串,也可以是结构类型 ...
- Golang Slice 总结
数组 Go的切片是在数组之上的抽象数据类型,因此在了解切片之前必须要要理解数组.数组类型由指定和长度和元素类型定义.数组不需要显式的初始化:数组元素会自动初始化为零值:Go的数组是值语义.一个数组变量 ...
- Golang基础教程——map使用篇
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第7篇文章,我们来聊聊golang当中map的用法. map这个数据结构我们经常使用,存储的是key-value的键 ...
- 记一次坑爹的golang 二维map判断问题
记一次坑爹的golang 二维map判断问题 2018年10月18日 23:16:21 yinnnnnnn 阅读数:32更多 个人分类: golang 版权声明:本文为博主原创文章,未经博主允许不 ...
随机推荐
- Python全栈工程师(Python3 所有基础内容 0-0)
转发:https://www.cnblogs.com/ParisGabriel/p/9388030.html statements 语句print 输出quit() 退出exit() 退出ct ...
- 【转】聊聊并发(一)——深入分析Volatile的实现原理
即两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件(race condition). 引言 在多线程并发编程中synchronized和Volatile都扮演着重要的 ...
- [asm] 小菜汇编基础和学习技巧小结(一)
以下小结纯属小菜自学过程产生的dump,大神请飘过! 汇编是一门庞大复杂的学问,在计算机的世界里差不多无所不入.很多编程领域都会或多或少跟汇编打交道.本人不是科班出身的程序员,所以很多基础都为零,学历 ...
- 线程:Java中wait、notify、notifyAll使用详解
基础知识 首先我们需要知道,这几个都是Object对象的方法.换言之,Java中所有的对象都有这些方法. public final native void notify(); public final ...
- 【Swoole】php7.1安装swoole扩展
参照:https://zixuephp.net/article-430.html 1.源码编译安装,PHP版本7.1.33 2.在已经编译好安装的php7.1中安装swoole扩展. 一.下载swoo ...
- [转]理解Vuex的辅助函数mapState, mapActions, mapMutations用法
原文地址:https://www.cnblogs.com/tugenhua0707/p/9794423.html 在讲解这些属性之前,假如我们项目的目录的结构如下: ### 目录结构如下: demo1 ...
- Flutter中极光推送的使用----jpush_flutter
原文地址:https://www.cnblogs.com/niceyoo/p/11095994.html 1.申请极光账号和建立应用 极光推送的官方网址为:https://www.jiguang.cn ...
- Windows SVN迁移到Linux 服务器
一.备份VisualSVN项目 1. 现在要使用Linux作为svn服务器,之前是在windows Server 2008上的,用的是VisualSVN, 如下图所示. 2. 现在svn中有一个项目f ...
- phpspreadsheet 中文文档(三) 计算引擎
2019年10月11日13:59:52 使用PhpSpreadsheet计算引擎 执行公式计算 由于PhpSpreadsheet表示内存中的电子表格,因此它还提供公式计算功能.单元格可以是值类型(包含 ...
- Java分布式:分布式锁之Redis实现
Java分布式:分布式锁之Redis实现 分布式锁系列教程重点分享锁实现原理 Redis锁原理 核心命令 Redis分布式锁的原理是基于其SETNX命令,我们来看SETNX的解释. 实现过程 使用SE ...