随笔分类 - Golang
摘要:并发 vs 并行 首先,我们先来搞清楚概念以及并发和并行的区别。 并发 - 利用时间片切换来实现“同时”运行的。 并行 - 利用CPU的多核来实现通过多线程来实现同时运行。 Go 语言的设计理念就是通过高并发的方式来进行效率的提升。 goroutine 在go语言中,我们就是通过goroutine的
阅读全文
摘要:Go 语言也有反射的机制,通过这种机制可以大大提高程序的灵活性。 reflect包中的 TypeOf 与 ValueOf 方法 首先,当我们想要使用反射技术的时候,我们需要先引用 reflect 包。 之后,我们就可以通过reflect包中的TypeOf方法来取到类型,并且使用ValueOf方法来获
阅读全文
摘要:在go语言中,也有接口的定义。但是和其他语言不同的是,go语言的接口比较“特殊”。。。 定义 接口是一个或者多个方法签名的集合,它之后方法的定义,没有方法的实现,也不能在其中定义字段。 实现接口 在go语言中,通过定义类型来实现接口。实现接口的时候,无需显示指定实现了那个接口(这与其他语言不同),只
阅读全文
摘要:hello, 大家好,由于之前工作上面的事情较多,所以关于go语言的学习就暂时“搁浅了”。。。不过从今天开始,我们又将回到了go语言的学习过程之中。 当然,我们学习go的"初心"是为了看懂docker的source code。这个系列也就是先针对go的基本语法进行学习,实战是在 go的source
阅读全文
摘要:定义 go 语言中的struct与c的很相似,此外,go没有Class,也没有继承。 stuct的格式为:type <name> struct{} Struct是值类型 我们可以看到,age属性只在func内部被修改,因此可以确定struct是值类型(传递给函数的参数为值的一个copy) 如何传递引
阅读全文
摘要:定义 语法 - func 函数名 (参数列表) (返回值列表){ } 匿名函数 Go 语言允许将函数传递给一个变量,即定义函数也算是定义一种类型。 声明匿名函数时,可以省略函数的名称 闭包 defer Go 函数通过使用defer关键字,实现了许多“神奇”的事情 1. 改变函数执行的顺序 - 如果在
阅读全文
摘要:定义 map - 类似于HashTable或者Dictionary,使用key-value 对子的形式来表示。 key 必须由支持 == 或者 := 比较运算符,不能是函数,Slice还有Map类型。 map 查找比遍历快,但是比索引查找慢得多(100倍)。 使用"make" 关键字来定义map,
阅读全文
摘要:定义 切片本身不是数组,它指向底层的数组或者数组的一部分。因此,可以使用Slice来处理变长数组的应用场景。 Silice 是一种引用类型。 1、定义一个空的Slice 2、 从数组中干获取Slice 3、使用“make”关键字创建Slice make([]T, len, cap) []T - 表示
阅读全文
摘要:数组: Array 1. 定义: var <arrayName> [n] (n>=0) <type> 注: 数组的长度n,也是数组定义的组成部分;所以:var intArr1 [1]int 与 var intArr2 [2]int 表示为两个“不同类型” 的数组。 数组的常见定义: 或者将定义与赋值
阅读全文
摘要:指针 Go 语言中,对于指针有一些特殊约束: 1. 不在支持 “->” 符号,所有的指针使用“.” 来操作指针对象的成员变量 2. 指针的默认值为 “nil” ++ 与 -- 作为语句而非表达式 语句必须单独存在与一行,不能放在 “=” 右边 Go 语句 条件判断: if 循环语句 :for swi
阅读全文
摘要:常量的定义 1. 常量的值在编译的时候就已经确定。所以,在定义的时候就必须赋值 2. 使用 const 关键字来声明常量。赋值形式与变量类似: 3. 使用常量组定义时,如果不指定常量的值,该常量将自动取得上一行的值 枚举 Go 中的枚举和其他的语言有所不同,它即为常量的一组定义; 其中iota是常量
阅读全文
摘要:类型 Go 语言中的类型与其他语言类似,比较特殊的有以下几个: bool 类型 - 它的值只能是 true 与 false。 int / uint - 它们的长度会根据操作系统的不同(32/64 bit)的不同而有所区别。 保存指针的的32/64整形 - uintptr 引用类型 - slice,
阅读全文
摘要:经历了五一小假期,前后差不多一周多没有坚持学习了,所以在归来的第一时间继续 Go 的学习之旅。 Go 程序的基本结构 首先先贴出一段简单的代码:HelloGo.go 我们可以看到,首先是package关键字,它表明我们的程序所在的“包”。 注意:Go程序只能有唯一的 main 包,并且只能有一个 m
阅读全文
摘要:创建程序目录 接着上一节的内容,在我们的workspace (D:\Gopher) 里面创建子目录 hello,他的绝对路径为:D:\Gopher\src\github.com\tuo\hello 创建一个 Hello.go 文件 在 D:\Gopher\src\github.com\tuo\hel
阅读全文
摘要:Go tool 的使用 Go的tool要求我们对于code有一定的结构化组织和管理,下面我们就来一介绍他们: --GoPath environment variable: 顾名思义,环境变量,指定了Go开发的workspace。 --WorkSpace: 工作目录,里面的结构如下: “来自官网“ s
阅读全文
摘要:学习Go的缘由 由于LZ目前在使用docker,docker的编程语言使用的是“Go”,所以想更加深入的了解Docker(尝试着看懂source code)遂尝试了解下Golang。 安装 LZ用的是Window系统32bit的本本,官方有两种方式安装: 1.下载.msi,然后安装,默认设置即可 2
阅读全文