Let's GO(二)
人生苦短,Let's GO
今天我学了什么?
1. Map
map:映射,使用散列表(hash)实现
map[keyType]valueType
var a map[string]int
var a map[string]int
//defaule nil
fmt.Println(a==nil)
//init make(map,cap)
a = make(map[string]int,10)
a["一"] = 1
a["二"] = 2
a["四"] = 4
a["五"] = 5
fmt.Println(a)
fmt.Printf("a:%#v\n",a)
b := map[int]bool {
1 : true,
2 : false,
}
fmt.Printf("b:%#v\n",b)
// 探测是否存在map[key]
f,ok := a["三"]
fmt.Println(f,ok)
//ok == true
map默认是无序的,怎么让它按一定的顺序操作呢
//用slice取key
keys := make([]string,0,100)
for k := range c {
keys = append(keys,k)
}
//key排序
sort.Strings(keys)
for _,key := range keys {
fmt.Println(key,c[key])
}
有点绕口的两个东西,想起了c++的指针常量和常量指针..
//mapslice
//init slice,then init map
var mapSlice = make([]map[string]int,8,8)
mapSlice[0] = make(map[string]int,10)
mapSlice[0]["hello"] = 1
fmt.Println(mapSlice)
//slicemap
//init map, then init slice
var sliceMap = make(map[string][]int,10)
sliceMap["hello"] = make([]int,0,10)
sliceMap["hello"] = append(sliceMap["hello"],1,2,3,4,5)
fmt.Println(sliceMap)
map 东西还挺多的哈
2.函数
func name() (return) { //左大括号一定要写在同一行,不然无效
}
func intSum(x int, y int) int {
return x+y
}
//可变参数(...)
func intsum2(a ...int) int {
ret := 0
for _,i := range a {
ret += i
}
return ret
}
//go 的函数可以return 多个值
func calc(a,b int) (sum ,sub int) {
return a+b,a-b
}
//函数也可做参数
func compute(x,y int,op func(int,int) int) int {
return op(x,y)
}
//函数alias?
abc := calc
x,y := abc(1,2)
//匿名函数:直接写在调用的地方
func() {
fmt.Println("Anonymous Function")
}() //记得加()表示立即调用
3.闭包
引用大佬的话:闭包 = 函数 + 环境(外层变量的引用)
//闭包 = 函数 + 环境
//func return func
func a() func() {
str := "闭包"
return func(){
fmt.Println("this is a ",str)
}
}
func main() {
r := a()
r()
}
//再来个复杂点的
func makeSuffixFunc(suffix string) func(string) string {
return func(name string) string {
if !strings.HasSuffix(name,suffix) {
return name + suffix
}
return name
}
}
总结
Talk is Cheap , Show me the Code
学到的感到的都在代码和注释里了。
今天,就先写到这里吧,结构体的内容还没学完,明天再一次性发。
那么,人生苦短,朋友,Let's GO!
Let's GO(二)的更多相关文章
- 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态
最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...
- 前端开发中SEO的十二条总结
一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- MIP改造常见问题二十问
在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...
- 如何一步一步用DDD设计一个电商网站(二)—— 项目架构
阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...
- ASP.NET Core 之 Identity 入门(二)
前言 在 上篇文章 中讲了关于 Identity 需要了解的单词以及相对应的几个知识点,并且知道了Identity处在整个登入流程中的位置,本篇主要是在 .NET 整个认证系统中比较重要的一个环节,就 ...
- MVVM模式和在WPF中的实现(二)数据绑定
MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...
- Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作
一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...
随机推荐
- Python 3.9 beta2 版本发布了,看看这 7 个新的 PEP 都是什么?
原作:Jake Edge 译者:豌豆花下猫@Python猫 英文:https://lwn.net/Articles/819853/ 随着 Python 3.9.0b1 的发布,即开发周期中计划的四个 ...
- 小程序-图片/文件本地缓存,减少CDN流量消耗
写在前面 小程序网络图片读取: 在读取OSS图片CDN分发时流量大量消耗,导致资金费用增加. 网络图片比较大时,图片加载缓慢. 为了尽量减少上面两个问题,所以对已读的图片进行缓存处理,减少多次访问不必 ...
- ubuntu12.04 dnw2 fl2440 配置
1.安装libusb-dev sudo apt-get install libusb-dev 2.dnw2编译配置 源码如下,将其保存为dnw2.c 编译命令 gcc dnw2.c -o dnw2 - ...
- .NET Core加解密实战系列之——RSA非对称加密算法
目录 简介 功能依赖 生成RSA秘钥 PKCS1格式 PKCS8格式 私钥操作 PKCS1与PKCS8格式互转 PKCS1与PKCS8私钥中提取公钥 PEM操作 PEM格式密钥读取 PEM格式密钥写入 ...
- 容器技术之Docker资源限制
上一篇我们聊到了docker容器的单机编排工具docker-compose的简单使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13121678.html: ...
- 十六进制颜色码及其表示-(6 digit color code)
我们知道对于RGB颜色系统,颜色是由三个256位的十进制数值表示的: (R:0-255,G:0-255,B:0-255) 那么一个三元组可以确定一种颜色. 然而,在很多配置文件中颜色并不是直接用十进制 ...
- 【django】CMS开发笔记一:虚拟环境配置
项目代码:https://github.com/pusidun/CMS-django 使用虚拟环境 虚拟环境是Python解释器的虚拟副本.在虚拟环境中安装私有包,不会影响全局的Python解释器.可 ...
- 【解读】TCP协议
本文内容如下: 1)TCP协议概念 2)TCP头部结构和字段介绍 3)TCP流量控制 滑动窗口 4)TCP拥塞控制 慢 ...
- mysql性能优化总结(MySql避免重复插入记录的几种方法)
如果我们创建了(area, age,salary)的复合索引,那么其实相当于创建了:(area,age,salary),(area,age).(area)三个索引,这被称为最佳左前缀特性.因此我们在创 ...
- 多图解释Redis的整数集合intset升级过程
redis源码分析系列文章 [Redis源码系列]在Liunx安装和常见API 为什么要从Redis源码分析 String底层实现——动态字符串SDS 双向链表都不懂,还说懂Redis? 面试官:说说 ...