03 2022 档案
摘要:本节主要介绍了,字典的基本增删查改操作过程和字典的底层实现为哈希表。对键值和哈希值的探讨,说明了为什么键值类型要进行约束(不能是函数类型,切片类型等), 但我觉得这只是一个原因,本质的原因其实是,如果键值不能判等的话则每一个键值元素都是独一无二的,映射到哈希表中的都是独一无二的元素,那么使用哈希表的
阅读全文
摘要:List 在List包含的方法中,用于接受新元素作为参数的方法只接受interface{}类型的值,方法在内部包装为Element类型。 Ring与List区别 本质上都为循环链表,List空链表时仍有一个不持有任何元素的结点。var r ring.Ring声明的变量是长度为1的循环链表。 创建并初
阅读全文
摘要:这章主要讲Go语言Select关键字常见现象,数据结构,以及实现原理。 select 是与 switch 相似的控制结构,与 switch 不同的是,select 中虽然也有多个 case,但是这些 case 中的表达式必须都是 Channel 的收发操作。 现象 当我们在 Go 语言中使用 sel
阅读全文
摘要:Redis介绍 安装go-Redis依赖,不go mod init(创建.mod文件)会出错。 安装Redis: brew install redis 启动Redis: //方式一:使用brew帮助我们启动软件 brew services start redis //方式二 redis-server
阅读全文
摘要:安装go-Redis依赖,不go mod init(创建.mod文件)会出错。 安装Redis: brew install redis 启动Redis: //方式一:使用brew帮助我们启动软件 brew services start redis //方式二 redis-server /usr/lo
阅读全文
摘要:fmt Print 点击查看代码 func Print(a ...interface{}) (n int, err error) func Printf(format string, a ...interface{}) (n int, err error) func Println(a ...int
阅读全文
摘要:Go语言中文基础文档 需要之后补充看:函数-单元测试,压力测试。方法-自定义error, 网络编程,并发编程。 极客时间Go语言核心36讲
阅读全文
摘要:匿名字段 匿名字段:只提供类型,不写字段名 所有的内置类型和自定义类型都是可以作为匿名字段去使用。 接口 接口:定义对象的行为规范,,规范的细节由具体的对象实现。 接口是一个或多个方法签名的集合。 任何类型的方法集中只要拥有该接口'对应的全部方法'签名。 就表示它 "实现" 了该接口,无须在该类型上
阅读全文
摘要:方法定义 • 只能为当前包内命名类型定义方法。 • 参数 receiver 可任意命名。如方法中未曾使用 ,可省略参数名。 • 参数 receiver 类型可以是 T 或 *T。基类型 T 不能是接口或指针。 • 不支持方法重载,receiver 只是参数签名的组成部分。 • 可用实例 value
阅读全文
摘要:函数定义 Go函数特点: 不需要声明原型 可变数量参数 多返回值 命名返回值参数 匿名函数、闭包 函数可以赋值给变量 不支持嵌套、重载、默认参数 函数可作为参数传递 偶尔遇到没有函数体的函数声明,这表示该函数不是以Go实现的。这样的声明定义了函数标识符。 参数 在默认情况下,Go 语言使用的是值传递
阅读全文
摘要:Go语言类型推断的好处? 提升程序的灵活性,代码重构变得容易,不损失程序运行效率(类型的确定在编译器完成)。 变量的重声明 再次声明的类型必须与原类型相同。 只有短变量声明时才能发生。 声明和赋值的变量有多个,并至少一个新变量。 作用域 Golang的作用域分为包级作用域,模块级作用域,函数作用域,
阅读全文
摘要:条件语句if 条件语句switch Type Switch: 判断某个interface变量中实际存储的变量类型。 点击查看代码 switch x.(type){ case type: statement(s) case type: statement(s) /* 你可以定义任意个数的case */
阅读全文
摘要:什么是库源码文件? 库源码文件指不能直接运行,但文件中的程序实体可以被其他源码文件使用的一类源码文件。 代码包导入路径与其相对路径一致吗? 通过import导入代码包,可以直接通过对应代码文件夹相对路径,即使此文件夹名称与包名不一样,但在使用其中的程序实体时必须以代码包名为限定符。为了不让代码包的使
阅读全文
摘要:Go于2009年由谷歌推出。 Init函数和main函数 Init函数 用于程序执行前初始化包变量 每个包可以多个,同一个包多个init执行顺序无明确定义 按照包导入依赖关系决定不同包初始化函数执行顺序 不能被调用,main函数执行前自动被调用 与main函数异同 相同点: 都不能有参数和返回值,都
阅读全文
摘要:可以将命令源码文件类比与C++的主函数对应的文件,里面包含程序运行的入口。 命令源码文件怎么接受参数: 通过flag包中的StringVar()函数和Parse()函数完成对命令行的解析。 执行带有命令行参数的程序: go run test.go -name "lll" 查看命令行参数信息: go
阅读全文
摘要:学习Go语言的第一件事:去官网下载Go语言安装包,解压安装包到合适的文件夹,配置环境变量,go version检查是否安装成功。 需要配置的三个环境变量:GOROOT, GOPATH, GOBIN. GOROOT: Go语言安装根目录的路径。 GOPATH:工作区目录的路径。 GOBIN:程序生成可
阅读全文