随笔分类 - Go
1
摘要:十九、错误、异常处理 本章吐槽:go的异常处理实在是太难用了,一度让我写得十分反胃。 1 error go中我们通常会在函数或方法中返回error结构对象来判断是否有异常出现。go内置的错误类型error是一个接口类型,自定义的错误类型必须实现它: type error interface { Er
阅读全文
摘要:十八、并发编程 1 并发和并行 并发是指多个事件在同一时间间隔内发生,或者说并发是具有同时处理多个任务的能力。 并行是指多个事件在同一时刻发生,注意同一时刻和同一时间间隔的区别。并发在宏观上看上去,一段时间内多个任务同时执行,但是在每一时刻,单处理机只能有一道程序执行,只是操作系统会不断的切换多个任
阅读全文
摘要:十七、面向对象 go不是一个完全面向对象的语言,甚至没有类的概念。但是,这并不意味着go不支持面向对象,因为面向对象只是一种实现形式,只要实现了封装继承和多态,在使用上与其他面向对象语言就没有不同。 在go中,可以使用结构体取代类,使用接口实现多态,使用匿名字段提升实现继承。所以,go是完全可以做到
阅读全文
摘要:十六、接口 1 定义接口 在面向对象中,接口规范了一个对象的行为,接口指定对象必须实现的方法,而实现的细节由对象自己去完成。go语言中同样提供接口,它把所有的具有共性的方法定义在一起,只要任何其他类型只要实现了这些方法就是实现了这个接口。 接口的定义语法如下: type interface_name
阅读全文
摘要:十五、方法 1 方法定义 go语言中同时有函数和方法。一个方法就是一个包含了接收器的函数,接收器一般是结构体类型中的字段,也可以是非结构体。它的定义如下: func (variable_name variable_data_type) function_name() [return_type]{ /
阅读全文
摘要:十四、结构体 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。比如你需要定义一些互相有联系的变量,而变量之间的类型不同。 举个实际的例子,保存图书馆的书籍记录,每本书有以下属性:title,author,price,此时就可以使用结构体类型。 1 定义结构体 结构体定义需要使用type和
阅读全文
摘要:十三、指针 相比于c或c++,go语言的指针是很容易学习的,它可以更简单地执行一些任务。 1 取地址操作符& 变量是一种使用方便的占位符,用于引用计算机内存地址,使用&符号获取变量的内存地址,如下: func main() { var str = "hello world" fmt.Println(
阅读全文
摘要:十二、map 1 map集合 Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据。Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。 2 创建map 声明一个map集合 var map_variable map[key_data_type]value_da
阅读全文
摘要:十一、切片 Go 语言切片是对数组的抽象,因此切片是引用类型。但自身是结构体,值拷贝传递。 Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go 中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组 相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。 切片
阅读全文
摘要:十、Go包管理 1 使用GO111MODULE 在1.11版本后,推出 modules 机制,简称 mod,用于包管理。 使用 Go modules 之前需要环境变量 GO111MODULE,命令行输入go env可以 打印go的环境信息。 GO111MODULE=off: 不使用 modules
阅读全文
摘要:九、包 到目前为止,我们看到的 Go 程序都只有一个文件,文件里包含一个 main 函数和几个其他的函数。在实际中,这种把所有源代码编写在 一个文件的方法并不好用。以这种方式编写,代码的重用和维护都会很困难。而包(Package)解决了这样的问题。 包用于组织 Go 源代码,提供了更好的可重用性与可
阅读全文
摘要:八、数组 Go 语言提供了数组类型的数据结构。 数组是同一类型元素的集合,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。例如,整数集合 5,8,9,79,76 形成一个 数组。Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(当然,如果是 interface{} 类型
阅读全文
摘要:七、函数 函数是基本的代码块,用于执行一个任务。 Go 语言至少有一个入口main() 函数。 1 函数定义 函数定义的格式如下: func function_name( [parameter list] ) [return_types] { 函数体 } // 函数的作用范围就在大括号之间{} 函数
阅读全文
摘要:六、循环语句 Go没有while循环语句,只有for循环。 for 循环是一个循环控制结构,可以执行指定次数的循环。 Go 语言的 For 循环有 3 种形式,只有其中的一种使用分号。 和 C 语言的 for 一样: for init; condition; post { } 和 C 的 while
阅读全文
摘要:五、条件语句 1 if...else语句 func main() { var a int = 10 if a<20 { fmt.Println("如果条件为true则执行if内部") }else { fmt.Println("如果条件为false则执行else内部") } } 2 switch语句
阅读全文
摘要:三、运算符 1 算数运算符 下表列出了所有Go语言的算术运算符。假定 A 值为 10,B 值为 20。 运算符 描述 实例 + 相加 A + B 输出结果 30 - 相减 A - B 输出结果 -10 * 相乘 A * B 输出结果 200 / 相除 B / A 输出结果 2 % 求余 B % A
阅读全文
摘要:四、数据类型 下面是 Go 支持的基本类型: bool 布尔型 数字类型 int8, int16, int32, int64, int 整型 uint8, uint16, uint32, uint64, uint 无符号整型 float32, float64 浮点型 complex64, compl
阅读全文
摘要:二、变量 1 定义单个变量 func main(){ // 定义变量的第一种方法:全定义 var name type/var关键字 变量名 变量类型 // var name type = initialvalue 该语法可以声明并初始化 var age int = 10 // 变量如果声明就必须在后
阅读全文
摘要:一、绪论 1 Go语言介绍 Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言。 Go是静态强类型语言,是区别于解析型语言的编译型语言(静态:类型固定 强类型:不同类型不允许直接运算)。 解析型语言——源代码是先翻译为中间代码,然后由解析器对代码进行解释执行。 编译型
阅读全文
摘要:一、绪论 二、变量与常量 三、运算符 四、数据类型 五、条件语句 六、循环语句 七、函数 八、数组 九、包的使用 十、Go包管理 十一、切片 十二、map集合 十三、指针 十四、结构体 十五、方法 十六、接口 十七、面向对象 十八、并发编程 十九、错误、异常处理
阅读全文
1