随笔分类 -  Go

并发——无缓冲通道,带缓冲的通道,通道的多路复用,关闭通道
摘要:1、无缓冲通道 Go语言中无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道。这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能完成发送和接收操作。如果两个 goroutine 没有同时准备好,通道会导致先执行发送或接收操作 阅读全文
posted @ 2019-12-08 19:43 acgame 阅读(377) 评论(0) 推荐(0)
并发——轻量级线程,通道,单向通道
摘要:1、轻量级线程 goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。Go 程序从 main 包的 main() 函数开始,在程序启动时,Go 程序就会为 main() 函数创建一个默认 阅读全文
posted @ 2019-12-08 16:48 acgame 阅读(377) 评论(0) 推荐(0)
包——基本概念,自定义包,创建包,导出包中的标志符
摘要:1、基本概念 Go语言是使用包来组织源代码的,并实现命名空间的管理。任何源代码文件必须属于某个包。源码文件的第一行有效代码必须是 package pacakgeName 语句,通过该语句声明自己所在的包。 1)概念 Go语言的包借助了目录树的组织形式,一般包的名称就是其源文件所在目录的名称,虽然 G 阅读全文
posted @ 2019-12-07 22:43 acgame 阅读(348) 评论(0) 推荐(0)
接口——嵌套,接口和类型间的转换,空接口类型,类型分支
摘要:1、嵌套 在 Go语言中,不仅结构体与结构体之间可以嵌套,接口与接口间也可以通过嵌套创造出新的接口。 一个接口可以包含一个或多个其他的接口,这相当于直接将这些内嵌接口的方法列举在外层接口中一样。只要接口的所有方法被实现,则这个接口中的所有嵌套接口的方法均可以被调用。 2、接口和类型间的转换 Go语言 阅读全文
posted @ 2019-12-03 23:12 acgame 阅读(367) 评论(0) 推荐(0)
接口——定义,实现接口的条件,类型与接口的关系,类型断言
摘要:1、定义 Go 语言的接口设计是非侵入式的,接口编写者无须知道接口被哪些类型实现。而接口实现者只需知道实现的是什么样子的接口,但无须指明实现哪一个接口。编译器知道最终编译时使用哪个类型实现哪个接口,或者接口应该由谁来实现。 每个接口类型由数个方法组成。接口的形式代码如下: type 接口类型名 in 阅读全文
posted @ 2019-12-01 12:41 acgame 阅读(712) 评论(0) 推荐(0)
结构体——内嵌,初始化内嵌结构体,内嵌结构体成员名字冲突
摘要:1、内嵌 结构体可以包含一个或多个匿名(或内嵌)字段,即这些字段没有显式的名字,只有字段的类型是必须的,此时类型也就是字段的名字。匿名字段本身可以是一个结构体类型,即结构体可以包含内嵌结构体。 注意:在一个结构体中对于每一种数据类型只能有一个匿名字段。 1)内嵌的结构体可以直接访问其成员变量 嵌入结 阅读全文
posted @ 2019-11-24 18:23 acgame 阅读(1330) 评论(0) 推荐(0)
结构体——方法和接收器,为任意类型添加方法
摘要:1、方法和接收器 在Go语言中,结构体就像是类的一种简化形式,那么类的方法在哪里呢?在Go语言中有一个概念,它和方法有着同样的名字,并且大体上意思相同,Go 方法是作用在接收器(receiver)上的一个函数,接收器是某种类型的变量,因此方法是一种特殊类型的函数。 接收器类型可以是(几乎)任何类型, 阅读全文
posted @ 2019-11-24 16:21 acgame 阅读(433) 评论(0) 推荐(0)
结构体——定义,实例化,初始化
摘要:1、定义 Go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”,这些字段有以下特性: 字段拥有自己的类型和值; 字段名必须唯一; 字段的类型也可以是结构体,甚至是字段所 阅读全文
posted @ 2019-11-24 15:13 acgame 阅读(2851) 评论(0) 推荐(0)
函数,匿名函数,函数类型实现接口,闭包,可变参数,defer,panic,recover
摘要:1、函数 1)声明 函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。 func 函数名(形式参数列表)(返回值列表){ 函数体} 如果一个函数在声明时,包含返回值列表,那么该函数必须以 return 语句结尾,除非函数明显无法运行到结尾处,例如函数在结尾时调用了 panic 异常或 阅读全文
posted @ 2019-11-17 21:23 acgame 阅读(311) 评论(0) 推荐(0)
流程控制——if,循环,for range,switch, goto,break,continue
摘要:1、if 格式: if condition1 { // do something} else if condition2 { // do something else}else { // catch-all or default} else if 分支的数量是没有限制的。关键字 if 和 else 阅读全文
posted @ 2019-11-17 19:26 acgame 阅读(339) 评论(0) 推荐(0)
range关键字,map,sync.Map,list
摘要:1、range关键字 Go语言有个特殊的关键字 range,它可以配合关键字 for 来迭代切片里的元素。注意,range 创建了每个元素的副本,而不是直接返回对该元素的引用。 示例: package main import "fmt" func main() { arr := []int{1,2, 阅读全文
posted @ 2019-11-17 17:34 acgame 阅读(1432) 评论(0) 推荐(0)
数组,切片
摘要:1、数组 数组属于值类型。 1)声明 var 数组变量名 [元素数量]Type 数组变量名:数组声明及使用时的变量名。 元素数量:数组的元素数量,可以是一个表达式,但最终通过编译期计算的结果必须是整型数值,元素数量不能含有到运行时才能确认大小的数值。 Type:可以是任意基本类型,包括数组本身,类型 阅读全文
posted @ 2019-11-17 15:52 acgame 阅读(1030) 评论(0) 推荐(0)
类型转换,指针,变量的生命周期,常量,模拟枚举,类型别名和类型定义
摘要:1、类型转换 在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明: valueOfTypeB = typeB(valueOfTypeA) 类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值 阅读全文
posted @ 2019-11-16 23:11 acgame 阅读(363) 评论(0) 推荐(0)
字符串类型及其常用操作
摘要:1、字符串类型 字符串是一种值类型,且值不可变,即创建某个文本后将无法再次修改这个文本的内容,字符串是字节的定长数组。 1)定义字符串 可以使用双引号""来定义字符串,字符串中可以使用转义字符来实现换行、缩进等效果。 一般的比较运算符(==、!=、<、<=、>=、>)是通过在内存中按字节比较来实现字 阅读全文
posted @ 2019-11-16 16:58 acgame 阅读(1737) 评论(0) 推荐(0)
整数类型,浮点类型,复数,bool类型
摘要:1、整数类型 Go语言同时提供了有符号和无符号的整数类型,其中包括 int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型,分别对应 8、16、32、64 bit 大小的有符号整数,与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型 阅读全文
posted @ 2019-11-16 14:18 acgame 阅读(804) 评论(0) 推荐(0)
声明,初始化,匿名变量,作用域
摘要:1、变量声明 1)标准格式: var 变量名 变量类型 当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。 2)批量格式 var (变量名1 变量类 阅读全文
posted @ 2019-11-13 00:08 acgame 阅读(224) 评论(0) 推荐(0)