摘要: 示例 8.1 make_maps.go package main import "fmt" func main() { var mapLit map[string]int //var mapCreated map[string]float32 var mapAssigned map[string]i 阅读全文
posted @ 2017-05-16 18:00 bonelee 阅读(4441) 评论(0) 推荐(0) 编辑
摘要: 7.6.6 搜索及排序切片和数组 标准库提供了 sort 包来实现常见的搜索和排序操作。您可以使用 sort 包中的函数 func Ints(a []int) 来实现对 int 类型的切片排序。例如 sort.Ints(arri),其中变量 arri 就是需要被升序排序的数组或切片。为了检查某个数组 阅读全文
posted @ 2017-05-16 17:48 bonelee 阅读(9437) 评论(0) 推荐(0) 编辑
摘要: 切片的复制与追加 如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来。下面的代码描述了从拷贝切片的 copy 函数和向切片追加新元素的 append 函数。 示例 7.12 copy_append_slice.go package main import "fmt" fu 阅读全文
posted @ 2017-05-16 17:28 bonelee 阅读(1955) 评论(0) 推荐(0) 编辑
摘要: 切片 切片(slice)是对数组一个连续片段的引用(该数组我们称之为相关数组,通常是匿名的),所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型)。 切片是一个 长度可变的数组。 多个切片如果表示同一个数组的片段,它们可以共享数据;因此一个切片和 阅读全文
posted @ 2017-05-16 17:14 bonelee 阅读(6625) 评论(0) 推荐(0) 编辑
摘要: 数组声明的格式是: var identifier [len]type 例如: var arr1 [5]int 在内存中的结构是: 对索引项为 i 的数组元素赋值可以这么操作:arr[i] = value,所以数组是 可变的。 由于索引的存在,遍历数组的方法自然就是使用 for 结构: IDIOM: 阅读全文
posted @ 2017-05-16 16:16 bonelee 阅读(2557) 评论(0) 推荐(0) 编辑
摘要: 内置函数 Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。 以下是一个简单的列表,我们会在后面的章节中对它们进行逐个深入的讲解。 6.1 阅读全文
posted @ 2017-05-16 16:05 bonelee 阅读(371) 评论(0) 推荐(0) 编辑
摘要: defer 和追踪 关键字 defer 允许我们推迟到函数返回之前(或任意位置执行 return 语句之后)一刻才执行某个语句或函数(为什么要在返回之后才执行这些语句?因为 return 语句同样可以包含一些操作,而不是单纯地返回某个值)。 关键字 defer 的用法类似于面向对象编程语言 Java 阅读全文
posted @ 2017-05-16 15:47 bonelee 阅读(1053) 评论(0) 推荐(1) 编辑
摘要: 5.2 测试多返回值函数的错误 Go 语言的函数经常使用两个返回值来表示执行是否成功:返回某个值以及 true 表示成功;返回零值(或 nil)和 false 表示失败(第 4.4 节)。当不使用 true 或 false 的时候,也可以使用一个 error 类型的变量来代替作为第二个返回值:成功执 阅读全文
posted @ 2017-05-16 15:13 bonelee 阅读(789) 评论(0) 推荐(0) 编辑
摘要: 4.4.2 值类型和引用类型 所有像 int、float、bool 和 string 这些基本类型都属于值类型,使用这些类型的变量直接指向存在内存中的值。 Go 语言的取地址符是 &,放到一个变量前使用就会返回相应变量的内存地址。 示例 4.22 string_pointer.go package 阅读全文
posted @ 2017-05-16 14:33 bonelee 阅读(2680) 评论(0) 推荐(0) 编辑
摘要: 示例 4.1 hello_world.go package main import "fmt" func main() { fmt.Println("hello, world") } 4.2.1 包的概念、导入与可见性 Go 的标准库包含了大量的包(如:fmt 和 os),但是你也可以创建自己的包( 阅读全文
posted @ 2017-05-16 13:15 bonelee 阅读(730) 评论(1) 推荐(0) 编辑
摘要: Go 自带的工具集主要使用脚本和 Go 语言自身编写的,目前版本的 Go 实现了以下三个工具: go install 是安装 Go 包的工具,类似 Ruby 中的 rubygems。主要用于安装非标准库的包文件,将源代码编译成对象文件。 go fix 用于将你的 Go 代码从旧的发行版迁移到最新的发 阅读全文
posted @ 2017-05-16 11:55 bonelee 阅读(3021) 评论(0) 推荐(0) 编辑
摘要: 3.3 调试器 应用程序的开发过程中调试是必不可少的一个环节,因此有一个好的调试器是非常重要的,可惜的是,Go 在这方面的发展还不是很完善。目前可用的调试器是 gdb,最新版均以内置在集成开发环境 LiteIDE 和 GoClipse 中,但是该调试器的调试方式并不灵活且操作难度较大。 如果你不想使 阅读全文
posted @ 2017-05-16 11:49 bonelee 阅读(610) 评论(0) 推荐(0) 编辑
摘要: 2.7 Go 运行时(runtime) 尽管 Go 编译器产生的是本地可执行代码,这些代码仍旧运行在 Go 的 runtime(这部分的代码可以在 runtime 包中找到)当中。这个 runtime 类似 Java 和 .NET 语言所用到的虚拟机,它负责管理包括内存分配、垃圾回收(第 10.8 阅读全文
posted @ 2017-05-16 11:44 bonelee 阅读(7942) 评论(0) 推荐(0) 编辑
摘要: Go 环境变量 Go 开发环境依赖于一些操作系统环境变量,你最好在安装 Go 之间就已经设置好他们。如果你使用的是 Windows 的话,你完全不用进行手动设置,Go 将被默认安装在目录 c:/go 下。这里列举几个最为重要的环境变量: $GOROOT 表示 Go 在你的电脑上的安装位置,它的值一般 阅读全文
posted @ 2017-05-16 11:37 bonelee 阅读(14077) 评论(0) 推荐(0) 编辑
摘要: 从 Go 1.0.3 版本开始,不再使用 8g,8l 之类的指令进行程序的构建,取而代之的是统一的 go build 和 go install 等命令,而这些指令会自动调用相关的编译器或链接器。 如果你想获得更深层次的信息,你可以在目录 $GOROOT/src/cmd 下找到编译器和链接器的源代码。 阅读全文
posted @ 2017-05-16 11:31 bonelee 阅读(1872) 评论(0) 推荐(0) 编辑
摘要: 思路:通过http请求获取es集群中某一index的索引docs数目变化来进行ES性能统计 阅读全文
posted @ 2017-05-16 10:36 bonelee 阅读(790) 评论(1) 推荐(0) 编辑