go:内置函数 | 闭包 | 数组 | 切片 | 排序 | map | 锁
- 内置函数
- 1.close: 主要是用来关闭channel
- 2.len:用来求长度,比如string、array、slice、map、channel
- 3.new与make都是用来分配内存
- new用来分配值类型,如int、string,返回的是指针
- make用来分配引用类型,如chan、map、slice
- new创建的指针指向变量,make进行变量的初始化
- 4.append用来追加元素到数组、slice中
- 5.panie和recover,用来做错误处理
- 闭包
- 1。一个函数和与其相关的饮用环境组合而成的实体
- package main
- import "fmt"
- func Addr() func(int) int {
- var x int
- return func(d int) int {
- x +=d
- return x
- }
- }
- func main() {
- f := Addr()
- fmt.Println(f(1))
- fmt.Println(f(100))
- fmt.Println(f(1000))
- }
- 数组
- 1.数组:
- 是同一种数据类型的固定长度的序列
- 2.数组定义
- var a [len]int
- 3.长度是数据类型的一部分,因此,var a[5] int和var a[10] int是不同类型
- 4.数据可以通过下标进行访问,下标是从0开始,最后一个元素的下标为len-1
- 5.访问越界,如果下标在数组合法范围之外,则触发访问越界,会panic
- 6.数组的初始化
- a.var age() [5]int = [5] int{1,2,3,4,5}
- b.var age() = [5]int{1,2,3,4,5}
- c.var age = [...]int {1,2,3,4,5}
- d.var str = [5]string{3:"hello world",4:"tom"}
- 7.多维数组
- a.var age [5][3]int
- b.var f [2][3]int = [...][3]int{{1,2,3},{4,5,6}}
- 切片
- 1.切片,切片是数组的一个引用,因此切片是引用类型
- 2.切片的长度可以改变,因此,切片是一个可变数组
- 3.切片遍历方式和数组一样,可以用len()求长度
- 4.cap可以求出slice最大的容量,0<=len(slice) <=cap(array),其中arrayshi slice引用的数组
- 5.切片的定义
- var 变量名 []类型,比如 var str []string var arr []int
- 6.切片的初始化:
- var slice []int = arr[start:end]
- var slice []int = arr[0:end] 简写为 var slice []int = arr[:]
- var slice []int = arr[start:len(arr)]简写为var slice[]int = arr[start:]
- var slice []int = arr[0,len(arr)]简写为 var slice[]int = arr[:]
- 7.通过make创建切片
- var slice []type = make([]type,len)
- slice := make([]type,len)
- slice := make([]type,len,cap)
- 8.用append内置函数操作切片
- slice = append(slice,10)
- var a = []int {1,2,3}
- var b = []int {4,5,6}
- a = append(a,b...)
- 9.切片拷贝
- s1 := []int{1,2,3,4,5}
- s2 := make([]int,10)
- copy(s2,s1) // copy不会扩容,append会。
- s3 := []int{1,2,3}
- s3 = append(s3,s2...)
- s3 = append(s3,4,5,6)
- 10.字符串改字符
- s := "hello world"
- s1 := []rune(s) //[]byte(s)
- s1[0] = '0'
- str := string(s1)
- 排序
- 1.sort.Ints()对证书进行排序
- 2.sort.String对字符和窜进行排序
- 3.sort.Float64s对浮点型进行排序
- 4.sort.SearchInte(a []int,b int)从数组a中查找b。前提是a有序
- 5.sort.SearchFloats(a []float64,b float64)从数组a中查找b。前提是a有序
- 7.sort.SearchStrings(a []string,b string)从数组a中查找b。前提是a有序
- map
- 1.key-value的数据结构,又叫字典或关联数组
- a.声明
- var map1 map[keytype]valuetype
- var a map[string]string
- var a map[string]int
- var a map[int]string
- var a map[string]map[string]string
- //声明不会分配内存,初始化需要make
- 锁
- 1.互斥锁
- sync.Mutex
- var lock sync.Mutex
- func test() {
- var a map[int]int
- a = make(map[int]int)
- a[7] = 10
- a[5] = 10
- a[3] = 10
- a[1] = 10
- for i :=0;i<3;i++{
- go func(b map[int]int){
- lock.Lock()
- b[8] = rand.Intn(100)
- lock.Unlock()
- }(a)
- lock.Lock()
- fmt.Println(a)
- lock.Unlock()
- time.sleep(time.Second)
- }
- }
- 2.读写锁
- var mu sync.RWMutex
- go build -race 目录 检测代码是否有冲突
go:内置函数 | 闭包 | 数组 | 切片 | 排序 | map | 锁的更多相关文章
- Python函数05/内置函数/闭包
Python函数05/内置函数/闭包 目录 Python函数05/内置函数/闭包 内容大纲 1.内置函数(二) 2.匿名函数及内置函数(重要) 3.闭包 4.今日总结 5.今日练习 内容大纲 1.内置 ...
- awk(流程控制、内置变量、内置函数、数组)
摘自:http://bbs.51cto.com/thread-883948-1-1.html awk(流程控制.内置变量.内置函数.数组) ... 参考其他的资料,给大家看看.一.awk流程控制语句 ...
- 12.Python略有小成(生成器,推导式,内置函数,闭包)
Python(生成器,推导式,内置函数,闭包) 一.生成器初始 生成器的本质就是迭代器,python社区中认为生成器与迭代器是一种 生成器与迭代器的唯一区别,生成器是我们自己用python代码构建成的 ...
- Python 内置函数 -- zip(), sorted(), filter()和map()
内置函数1. zip() 打包(木桶效应)描述: zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素打包成一个个元组, 然后返回由这些元组组成的列表语法: zip([iterable, ...
- python内置函数lambda、filter、map、reduce
lambda匿名函数 1.lambda只是一个表达式,函数体比def简单多. 2.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去 3.lambda函数 ...
- 内置函数系列之 sorted排序
sorted排序函数语法: sorted(可迭代对象,key=函数(默认为None),reverse=False) 将可 迭代对象的每一个元素传进key后面的函数中,根据函数运算的结果(返回值)进行排 ...
- Python 内置函数、作用域、闭包、递归
一.内置函数如何使用 help()一下: 如想看min()咋用?在shell中:help(min) 二.部分内置函数 (一).排序:sorted() li = [(1, 2, 3, 4), (7, 8 ...
- 4 python内置函数
1.内置函数的整体介绍 内置参数官方详解 https://docs.python.org/3/library/functions.html?highlight=built#ascii 2.各内置函数介 ...
- Python学习(五)函数 —— 内置函数 lambda filter map reduce
Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ...
随机推荐
- Win10下JDK环境搭建的两种方法
jdk1.8--64位官网下载的百度网盘 https://pan.baidu.com/s/1A7jYfupwMWZawb5z_RSdJg 提取码: 92eu 第一种方法(建议) 变量名: ...
- Python---1基础介绍
因公司有自动化测试需求,开始自学python,跟着廖雪峰老师的教程,一边学习,一遍记笔记,将学习过程中,遇到的大大小小奇奇怪怪的问题,记录与此. 一.安装 Python是跨平台的,它可以运行在Wind ...
- webpack在用dev-server的时候怎么配置多入口文件
类似下面这样就可以了,entry设置为对象 每个入口设置为属性,属性的值是一个数组,就可以像单入口一样往这个数组添加entry: { Profile: [ 'webpack-dev-server/cl ...
- myeclipse安装插件svn的步骤
下载插件地址:http://subclipse.tigris.org/ 方法一:本地安装 1.打开HELP->MyEclipse Configuration或者myeclipse->MyE ...
- 基于物理的渲染——间接光照
在前面的文章中我们已经给出了基于物理的渲染方程: 并介绍了直接光照的实现.然而在自然界中,一个物体不会单独存在,光源会照射到其他的物体上,反射的光会有一部分反射到物体上.为了模拟这种环境光照的形式,我 ...
- 查询优化基础知识 - chendh blog
概述 处理一个给定的查询,尤其是复杂查询,通常会有许多种策略,查询优化就是从这许多策略中找出最有效的查询执行计划的处理过程. 查询执行计划的步骤 产生逻辑上与给定表达式等价的表达式: 估计每个执行计划 ...
- Linux下无法生成core文件的解决办法
1.检查ulimit [root ~]# ulimit -c 0 0:表示禁止生成core文件,此时需要执行ulimit -c unlimited(临时生效),或者在.bashrc中添加“ulimit ...
- Redis list实现原理 - 双向循环链表
双向链表 双向表示每个节点知道自己的直接前驱和直接后继,每个节点需要三个域 查找方向可以是从左往右也可以是从右往左,但是要实现从右往左还需要终端节点的地址,所以通常会设计成双向的循环链表; 双向的循环 ...
- 爬虫(三)解析js,抓取优酷免费视频的真实播放地址
工具:google浏览器 + fiddler抓包工具 说明:这里不贴代码,[只讲思路!!!] 原始url = https://v.youku.com/v_show/id_XMzIwNjgyMDgwOA ...
- 常用css3选择器
<div class="wrapper"> <p class="test1">1</p> <p class=" ...