人生苦短,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(二)的更多相关文章

  1. 【小程序分享篇 二 】web在线踢人小程序,维持用户只能在一个台电脑持登录状态

    最近离职了, 突然记起来还一个小功能没做, 想想也挺简单,留下代码和思路给同事做个参考. 换工作心里挺忐忑, 对未来也充满了憧憬与担忧.(虽然已是老人, 换了N次工作了,但每次心里都和忐忑). 写写代 ...

  2. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  5. 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  6. MIP改造常见问题二十问

    在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...

  7. 如何一步一步用DDD设计一个电商网站(二)—— 项目架构

    阅读目录 前言 六边形架构 终于开始建项目了 DDD中的3个臭皮匠 CQRS(Command Query Responsibility Segregation) 结语 一.前言 上一篇我们讲了DDD的 ...

  8. ASP.NET Core 之 Identity 入门(二)

    前言 在 上篇文章 中讲了关于 Identity 需要了解的单词以及相对应的几个知识点,并且知道了Identity处在整个登入流程中的位置,本篇主要是在 .NET 整个认证系统中比较重要的一个环节,就 ...

  9. MVVM模式和在WPF中的实现(二)数据绑定

    MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中 ...

  10. Key/Value之王Memcached初探:二、Memcached在.Net中的基本操作

    一.Memcached ClientLib For .Net 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl.PHP为主. 仅仅memcached网站上列出的语言就有: ...

随机推荐

  1. Canvas绘制圆点线段

    最近一个小伙遇到一个需求,客户需要绘制圆点样式的线条. 大致效果是这样的: 思路一:计算并使用arc填充 他自己实现了一种思路,然后咨询我有没有更好的思路. 先看看他的思路是如何实现的,大致代码如下: ...

  2. 「从零单排canal 02」canal集群版 + admin控制台 最新搭建姿势(基于1.1.4版本)

    canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据 订阅 和 消费.应该是阿里云DTS(Data Transfer Service)的开 ...

  3. OpenSSH详解

    OpenSSH详解(思维导图) 1. SSH概述 SSH 软件架构 认证方式 2. OpenSSH 2.1 客户端程序ssh 配置文件 ssh命令 客户端免密登录 scp sftp 2.2 服务端程序 ...

  4. shutil模块的使用

    shutil模块 高级的文件,文件夹,压缩包处理模块 shutil.copyfileobj(fsrc,fdst,length) 将文件内容拷贝到另外一个文件中,可以部分.fdst目标length长度( ...

  5. 华为海思搞定4K60fps!Vmate掌上云台相机国内首发

    目录 Snoppa Vmate Snoppa Vmate Snoppa Vmate是一款掌上型的高性能4K摄像机,集成了微型机械三轴增稳云台,一体化机身集成可操控式触摸屏,既可以独立使用,也可以无线连 ...

  6. MQ系列(1)——rabbitMQ简介

    前文我们学习了 MQ的相关知识,现在我们来学习一下实现了AMQP协议的 rabbitMQ 中间件.rabbitMQ 是使用 erlang 语言编写的中间件(erlang之父 19年4月去世的,很伟大一 ...

  7. Mysq数据库索引(B-Tree索引)

    一.B-Tree索引的底层结构 所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同,如图所示,B-Tree索引的底层数据结构一般是B+树,反应了MyISAM索引是如何工作的.     二.B-T ...

  8. Java多线程之volatile详解

    本文目录 从多线程交替打印A和B开始 Java 内存模型中的可见性.原子性和有序性 Volatile原理 volatile的特性 volatile happens-before规则 volatile ...

  9. java之FTP上传下载

    import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...

  10. skywalking 5.X 分布式链路跟踪 使用笔记

    skywalking 特点 性能好,针对单实例5000tps的应用,在全量采集的情况下,只增加 10% 的CPU开销.详细评测见<skywalking agent performance tes ...