Go语言学习 二十八 运算符及运算符的优先级 2019-06-27 23:06:00 Go 暂无评论 1145 次阅读 一 运算符除比较运算符外,对于其他二元运算符,操作数类型必须相同,除非操作涉及移位或无类型常量。除移位操作之外,如果一个操作数是无类型常量而另一个操作数不是,则该常量将隐式转换为另一个操作数的类型。移位表达式中的右操作数必须具有无符号整数类型,或者是由类型为uint的值表示的无类型常量。如果非常量移位表达式的左操作数是无类型常量,则首先将其隐式转换为假设该移位表达式仅保留其左操作数时应该转换成的类 - 阅读全文 -
Go语言学习 二十七 程序的初始化和执行 2019-06-27 22:59:24 Go 暂无评论 1059 次阅读 一 零值不管是通过声明还是调用内置函数new来为变量分配存储时;或者通过复合字面量或make函数创建一个新值时,只要没有显式初始化,变量(或者值)就持有默认值。这种变量(或值)的每一个元素都会被设置为它们对应类型的零值。布尔类型是false,数字类型是0,字符串是"",指针、函数、接口、切片、信道、映射是nil。这种初始化是递归完成的,例如,如果没有指定值,则结构数组的每个元素 - 阅读全文 -
Go语言学习 二十六 内建函数汇总 2019-06-27 02:06:46 Go 暂无评论 1288 次阅读 内建函数都是预声明的,一般情况下可以像普通函数一样使用。它们没有标准的Go类型,因此它们只能出现在调用表达式中,而不能用作函数值。这些函数均可以在builtin包下找到。包builtin只是提供这些预声明函数的文档,并不是真的存在该包中。 - 阅读全文 -
Go语言学习 二十五 Go中的作用域 2019-06-26 01:02:08 Go 暂无评论 849 次阅读 在Go中,声明标识符的作用范围是源文件的范围,其中标识符表示指定的常量、类型、变量,函数、标签或包等。 - 阅读全文 -
Go语言学习 二十四 打印 2019-06-26 00:05:29 Go 暂无评论 1263 次阅读 Go中的格式化打印使用类似C的printf系列的风格,但功能更为丰富和通用。这些函数位于fmt包中,并具有大写名称:fmt.Printf,fmt.Fprintf,fmt.Sprintf 等等。字符串函数(Sprintf等)返回一个字符串,而不是填充提供的缓冲区。 - 阅读全文 -
Go语言学习 二十三 错误处理和运行时恐慌(Panic) 2019-06-18 00:19:20 Go 暂无评论 1257 次阅读 一 错误1.1 error类型按照约定,Go中的错误类型为error,这是一个内建接口,nil值表示没有错误:type error interface { Error() string }我们可以很方便的自定义一个错误类型:package main import ( "fmt" ) func main() { e := MyError{&qu - 阅读全文 -
Go语言学习 二十二 并发 2019-06-16 21:38:48 Go 暂无评论 1226 次阅读 并发是每个编程语言绕不开的一个话题,Go在并发编程方面提供了许多特性,帮助简化并发模型,如轻量级的线程goroutine,信道等,同样也提供了如sync.Mutex等的锁机制。为实现对共享变量的正确访问,Go语言提供了一种特殊的控制方式,即将共享的值通过信道传递。信道是一种带有方向的管道,数据可以在其中流转。在任意一个的时间点,只有一个goroutine能够访问该值,既无需加锁,也无需同步。数据竞 - 阅读全文 -
Go语言学习 二十一 内嵌 2019-06-15 12:19:25 Go 暂无评论 810 次阅读 在像Java这种语言中,有子类(或者继承)的概念,通过继承复用已有的功能或属性,与继承不同,Go中使用组合的方式来完成已有实现的复用,这种做法称为内嵌。具体来说,就是将已定义类型内嵌到结构体或接口中完成组合。 - 阅读全文 -
Go语言学习 二十 接口 2019-06-14 23:33:39 Go 暂无评论 1124 次阅读 接口是一组方法的集合,接口类型的方法集是其接口。在Go中,接口的实现无需显示指明,只需要实现类型实现了一个接口的所有方法,就表示该类型实现了该接口,这种实现方式也称为隐式实现。隐式接口实现解耦了接口的定义,这样,可以在任何包中实现一个接口,同时,也使得接口的定义更加明确。 - 阅读全文 -
Go语言学习 十九 方法 2019-06-03 21:39:35 Go 暂无评论 653 次阅读 上一篇文章中介绍了关于Go的类型体系。在Go中,可以为结构等类型定义方法。方法就是带有接收者参数的函数。方法接收者位于func关键字和方法名之间。 - 阅读全文 -