`

Go 语言集合(Go中文读书笔记)

 
阅读更多

 

Go 语言中的内构函数,不需要任何引用

 

close new panic complex

closed make recover real

len append print image

cap copy println 

 

close 和closed 用于channel通信和关闭channel

 

len 和cap 可用于不同的类型 len用于返回字符串、slice和数组的长度。

 

new 用于内存分配

 

make 用于内建类型map、slice、channel的内存分配

 

copy 用于复制slice、append 用于追加slice 

 

panic 和recover 用于异常机制的处理。

 

print 和println 是底层打印函数。可以不引用fit包的qing'kuang'x情况下使用

 

complex real 和imag 全部用于处理复数。

 

 

Go集合 array 、slices 和map array 和 slices序列号都是从0开始的,所有计算也是如此。 

 

array 由[n]<type> 定义,n表示array的长度。而<tpye>希望存储的内容的类型。数组的类型和大小是不能改变的。数组同样是值类型的。讲一个数组复制给另一个数组会复制整个数组的所有的元素。尤其是在向另一个数组传递的时候,它会获得一个数组的副本,而不是这个数组的指针。

 

声明一个数组 var a[3]int 如果不使用零来初始化它 则用复合声明 a: = [3]int {1,2,3} 也可以简写为 a := […]{1,2,3}。go语言会自动统计元素的个数。所有的项目必须都指定。

 

当声明一个array时,你必须在方括弧内输入些内容。数字或者三个点(…)

 

slice 与array接近。但是在新的元素假如的时候可以增加长度。slice总是指向底层的一个array。slice是一个指向array的指针,这是一个不同array的地方。slice是引用类型的。这意味着当赋值某个slice到另一个变量。两个引用会指向同一个array。

 

sl := make([]int ,10)

创建一个保存10个元素的slice。需要注意的是底层的array和slice并无不同。slice总是与一个固定的长度array成对的出现。其影响slice的容量和长度。

 

给定一个array或者slice,一个新的slice通过a[I:J]的方式创建。这会创建一个新的slice。指向a。从序列号I开始结束在序号J之前。长度为J-I。

 

a := […]int{1,2,3,4,5} //定义一个array 序列号从0到4;

s1 := a[2:4]  //从序列号2至3创建slice,它包含3,4;

s2 := a[1:5]  //从序列号1至4创建slice,它包含2,3,4, 5;

s3 := a[:] //从序号0至3创建,这是a[0:4]的简化写法,得到1,2,3,4;

s4 := a[:4] //这个是a[0:4]的简化写法。

s5 := a[:]  //从slice s2创建slice,注意这个s5任然指向array a。

 

 

函数append 向slice追加零值或者其他x值。并且返回追加后的新的、与s有相同类型的slice。如果s没有足够的容量存储追加的值,append分配一个足够大的,新的slice来存放原有的slice的元素和追加的值。因此返回的slice可能指向不同底层的array。

 

s0 := []int {0,0} 

 

s1 := append(s0,2)  //追加一个元素,s1 == []int{0,0,2};

 

s2 := append(s1,3,5,7)  //追加多个元素,s2 ==[]int{0,0,2,3,5,7} 

 

s3 := append(s2,s0…) //追加一个slice s3 = []int{0,0,2,3,5,7,0,0} 注意这三个点

 

函数copy从源slice scr复制元素到目标dot,并且返回复制的元素的个数。源和目标可能重叠。复制的数量是len(src)和len(dst)中最小的值。

 

var a = […]int{0,1,2,3,4,5,6,7}

 

var s = make([]int 6)

 

n1 := copy(s,a[0:]) // n1 == 6,s == []int{0,1,2,3,4,5}

 

n2 := copy(s,s[2:]) // n2 == 4,s == []int{2,3,4,5}

 

 

map 可以认为使用ige用字符串做索引的数组(在其简单的形势下)

 

monthdays := map[string]ing {

"Jan":31,"Feb":28,"Mar""31,

"Apr""30,"May":31,Jun:30, //注意结尾必须是逗号。

 

向map增加元素

 

monthdays["Oct"] = 31 //添加一个元素

monthdays["Feb"] = 29 闰年重写这个元素

 

 

检查这个元素是否存在

 

var value int 

 

var present bool 

 

value , présent = monthdays["Jan"] //如果存在,present则有值返回true

 

v,ok := monthdays["Jan"] //"逗号ok标准形式,go语言方式"

 

从map移除元素

monthdays["Mar"] = 0,false 

 

分享到:
评论

相关推荐

    Golang工作笔记.zip

    [第一例 留言板][第二例 gRPC使用例子][第三例 基于go-micro做服务注册和服务发现][第四例 聊天室][第五例 工具库][第六例 原生sql操作][第七例 sqlx操作][第八例 Redis数据库(gomodule/redigo)][第九例 Redis消息...

    算法与数据结构笔记+leetcode刷题笔记+大厂面试算法题(golang和java实现).zip

    【一线互联网大厂Java核心面试题库】Java基础、异常、集合、并发编程、JVM、Spring全家桶、MyBatis、Redis、数据库、中间件MQ、Dubbo、Linux、Tomcat、ZooKeeper、Netty等等..

    chinesenotes.com:中文笔记

    它包括一个可用于其他语料库的框架,包括模板系统,汉英词典,用Go语言编写的语料库管理系统,用于学习语法等的网页,文本集合以及用于查找的系统通过将鼠标悬停在文本上,并通过单击这些单词来弹出文本。...

    transfer::lollipop:集合多个API的大文件传输工具

    集合多个API的大文件传输工具具有多种文件传输服务支持的大型文件传输工具笔记部分API可能不是很稳定,如有问题可以及时提要或pr如使用过程中出现任何问题可以先尝试使用beta版程序,说不定已经修复过了这个bug安装...

    Java学习笔记-个人整理的

    {1.9.6}go-to}{33}{subsection.1.9.6} {1.9.7}\texttt {do-while}}{33}{subsection.1.9.7} {1.10}数组(array)}{34}{section.1.10} {1.10.1}数组变量的声明}{34}{subsection.1.10.1} {1.10.2}数组变量的初始化...

    MongoDB实战第二版笔记(9)第八章笔记

    MongoDB实战第二版笔记(9)第八章笔记   1、正确设置索引,MongoDB可以高效使用其硬件,并且快速服务查询。而错误索引导致查询减速、写减速、恶化硬件设备使用。【高效使用MongoDB为何要理解索引?】   2、索引...

    maxcli:用于与MaxCDN的REST API接口的CLI工具集合

    用于与MaxCDN的REST API接口的CLI工具集合 使用。 笔记 maxtail当前无法正常工作。 有关更新,请参见 。 配置 所有工具都使用配置文件,因为这是获取alias , secret和token的最后一种方法。 有关配置中可用的其他...

    leetcode叫数-leetcode:leetcode刷题笔记及视频

    刷题笔记及视频 GO 现代C语言 Node 并发并不太好, 性能也不太好, 不太稳定 GO 多核计算 JS + GO 是很多大厂的标配 package 包 模块化方案 函数 是代码行的集合 组织代码的方式 多个函数, 由一个文件组成, 完成一...

    MongoDB快速入门笔记(六)之MongoDB的文档修改操作

    MongoDB 是由 c++语言编写。 文档 文档是一组键 – 值对。文件动态模式。动态模式是指,在相同集合中的文档不需要具有相同的字段或结构组的公共字段的集合的文档,可以容纳不同类型的数据。 db.集合名称.update({...

    MongoDB学习笔记(二) 通过samus驱动实现基本数据操作

    传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,...

    MongoDB学习笔记(四) 用MongoDB的文档结构描述数据关系

    MongoDB的集合(collection)可以看做关系型数据库的表,文档对象(document)可以看做关系型数据库的一条记录。但两者并不完全对等。表的结构是固定的,MongoDB集合并没有这个约束;另外,存入集合的文档对象甚至...

    MongoDB最基本命令速查笔记

    show collections显示当前数据库的所有集合。 db.colleciton.find()来查找表格的所有数据。 db.serverStatus()查看数据库服务器的状态。 db.stats()查询指定数据库的统计信息。 use xxx如果数据库不存在则创建数据库...

    MongoDB快速入门笔记(六)之MongoDB删除文档操作

    MongoDB是工作在集合和文档上一种概念。 文档是一组键值对。文档具有动态模式。动态模式是指,在同一个集合的文件不必具有相同一组集合的文档字段或结构,并且相同的字段可以保持不同类型的数据。 db.集合名称....

    MongoDB学习笔记(六) MongoDB索引用法和效率分析

    由于集合中的键(字段)可以是普通数据类型,也可以是子文档。MongoDB可以在各种类型的键上创建索引。下面分别讲解各种类型的索引的创建,查询,以及索引的维护等。 一、创建索引  1. 默认索引  MongoDB有个默认的...

    谷歌师兄的leetcode刷题笔记-Fun-Scripts:多年来积累的各种随机脚本

    谷歌师兄的leetcode刷题笔记有趣的脚本 这是我多年来使用的随机代码片段的集合。 随意在您自己的项目中使用任何部分。 迷你迷宫 我的第一个 bash 脚本。 当时我很想对弟弟隐瞒我的游戏,所以我发明了一个我认为...

    MongoDB快速入门笔记(三)之MongoDB插入文档操作

    由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。 本文给大家介绍MongoDB的插入...

    MongoDB快速入门笔记(二)之MongoDB的概念及简单操作

    MongoDB是面向集合的文档式数据库,不像关系数据库那样,有表,列、行,mongoDB数据库则是由一系列的文档组成。下面给大家介绍MongoDB的概念及简单操作. 1、以下列举普通的关系型数据库和MongoDB数据库简单概念上的...

    MongoDB的mongo shell常用操作方法及操作脚本笔记

    当创建一个集合(table)的时候会自动创建当前数据库 3、查询所有数据库 show dbs; 4、删除当前使用数据库 db.dropDatabase(); 5、从指定主机上克隆数据库 db.cloneDatabase(“127.0.0.1”); 将指定机器上的...

    awesome-sca:全面的软件组成分析工具列表

    后续回购包含SCA工具的集合,可用于分析用作代码一部分的第三方组件中的风险。 随时添加任何新工具。 **笔记: :copyright: 代表专有软件,Rest属于自由和开源软件。 ** 目录 编程语言 Java脚本 Ruby 多种语言 :...

Global site tag (gtag.js) - Google Analytics