深度思维者

永远年轻,永远热泪盈眶

随笔分类 -  Golang基础知识系列

摘要:go build 命令一些可选项的用途和用法 在运行go build命令的时候,默认不会编译目标代码包所依赖的那些代码包。当然,如果被依赖的代码包的归档文件不存在,或者源码文件有了变化,那它还是会被编译。 如果要强制编译它们,可以在执行命令的时候加入标记 -a。此时,不但目标代码包总是会被编译,它依 阅读全文
posted @ 2024-08-08 15:58 failymao 阅读(37) 评论(0) 推荐(0) 编辑
摘要:1. 引言 关于闭包的说明,曾在很多篇幅中都有过一些说明,包括Go基础--函数2, go 函数进阶,异常与错误 都有所提到, 但是会发现,好像原理(理论)都懂,但是就是不知道如何使用,或者在看到一些源码时,依然一头雾水。 刚好今天看到了一篇优质的博客,并结合以前几篇关于类似闭包的介绍,再次对 闭包进 阅读全文
posted @ 2021-12-08 00:25 failymao 阅读(536) 评论(2) 推荐(0) 编辑
摘要:这里列举的Go语言常见坑都是符合Go语言语法的,可以正常的编译,但是可能是运行结果错误,或者是有资源泄漏的风险。 1. 可变参数是空接口类型 当参数的可变参数是空接口类型时,传入空接口的切片时需要注意参数展开的问题。 package main import "fmt" func main() { v 阅读全文
posted @ 2021-08-04 07:35 failymao 阅读(1584) 评论(3) 推荐(4) 编辑
摘要:1. 简介 GOPATH模式下,依赖包存储在$GOPATH/src,该目录下只保存特定依赖包的一个版本,而在GOMODULE模式下,依赖包存储在$GOPATH/pkg/mod,该目录中可以存储特定依赖包的多个版本。 需要注意的是$GOPATH/pkg/mod目录下有个cache目录,它用来存储依赖包 阅读全文
posted @ 2021-08-02 23:00 failymao 阅读(609) 评论(1) 推荐(0) 编辑
摘要:1.indirect含义 在使用 Go module 过程中,随着引入的依赖增多,也许你会发现go.mod文件中部分依赖包后面会出现一个// indirect的标识。这个标识总是出现在require指令中,其中//与代码的行注释一样表示注释的开始,indirect表示间接的依赖。 比如开源软件 Ku 阅读全文
posted @ 2021-08-01 17:21 failymao 阅读(3081) 评论(0) 推荐(0) 编辑
摘要:1. Module的定义 举个栗子 https://github.com/blang/semver 项目中可以包含一个或多个package,不管有多少package,这些package都随项目一起发布,即当我们说github.com/blang/semver某个版本时,说的是整个项目,而不是具体的p 阅读全文
posted @ 2021-07-31 23:38 failymao 阅读(914) 评论(0) 推荐(0) 编辑
摘要:版本 当前更新版本:2021-04-23 版本地址:commit:#114 如果您发现任何更新、问题或改进,请随时 fork 和 PR Please feel free to fork and PR if you find any updates, issues or improvement. 目录 阅读全文
posted @ 2021-06-23 11:36 failymao 阅读(340) 评论(0) 推荐(0) 编辑
摘要:回调函数和闭包 当函数具备以下两种特性的时候,就可以称之为高阶函数(high order functions): 函数可以作为另一个函数的参数(典型用法是回调函数) 函数可以返回另一个函数,即让另一个函数作为这个函数的返回值(典型用法是闭包) 一般来说,附带的还具备一个特性:函数可以作为一个值赋值给 阅读全文
posted @ 2021-04-29 10:10 failymao 阅读(285) 评论(0) 推荐(0) 编辑
摘要:Go并发特点 goroutine只是由官方实现的超级"线程池"而已,每个实例4 5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销。 并发不是并行(多CPU): 并发主要由切换时间片来实现"同时"运行,并行则是直接利用多核实现多线程的运行,但Go可以设置使用核数,以发挥多核计算机的能力。 通 阅读全文
posted @ 2018-07-19 00:33 failymao 阅读(590) 评论(0) 推荐(1) 编辑
摘要:反射的知识点比较晦涩,后期会对此知识点展开深入的分析及示例代码展示 反射可达大提高程序的灵活性,使得inferface{}有更大的发挥余地 反射使用TypeOf和ValueOf函数从接口中获取目标对象信息:字段属性,方法信息 示例2 通过反射可以"动态"调用方法 阅读全文
posted @ 2018-07-17 00:14 failymao 阅读(329) 评论(0) 推荐(0) 编辑
摘要:接口是一个或多个方法签名名的集合,定义方式如下 `type Interface_Name interface { method_a() string method_b() int .... } ` 只要某个类型拥有该接口的所有方法签名,就算实现该接口,无需显示声明实现了那个接口,这称为structu 阅读全文
posted @ 2018-07-16 00:31 failymao 阅读(1065) 评论(0) 推荐(0) 编辑
摘要:Go没有类似python语言中类class的概念,但依旧有method 类型方法定义格式如下 `func (a mytype) method_name(x type)(y type){ return y }` 调用方式: 通过显示的说明Receiver(强制函数传递的第一个参数)来实现与某个类型(s 阅读全文
posted @ 2018-07-15 11:04 failymao 阅读(307) 评论(0) 推荐(0) 编辑
摘要:结构体struct类似python语言中的类class,结构体类的元素可以是一个变量,或者函数或者其它的类型,好比python的属性和方法。 简单的方式进行结构体的初始化 struct也是一个 ,也就是说传递的时候,拷贝的是值,正常途径无法改变结构内的值,需通过 的方式进行修改 推荐结构体初始化时, 阅读全文
posted @ 2018-07-14 16:48 failymao 阅读(410) 评论(2) 推荐(0) 编辑
摘要:defer 匿名函数特性 执行方式类似其它语言中的析构函数,在函数体执行结束后按照调用顺序的 逐个执行 即使函数发生 也会执行,类似于try...except 常用于 资源清理,文件关闭,解锁以及记录时间等操作 支持匿名函数的调用 通过于匿名函数配合可在return之后修改函数计算的结果 如果函数体 阅读全文
posted @ 2018-07-11 23:40 failymao 阅读(386) 评论(0) 推荐(0) 编辑
摘要:函数function Go函数不支持 嵌套, 重载和默认参数 支持以下特性: 无须声明原型,不定长度长度变参,多返回值,命名返回值参数,匿名函数,闭包 定义函数使用关键字func,且左侧大括号不能另起一行 函数也可以作为一种类型使用 函数名可以理解为内存地址的编号,可以被用来赋值操作。 匿名函数,不 阅读全文
posted @ 2018-07-11 22:33 failymao 阅读(883) 评论(0) 推荐(0) 编辑
摘要:map 类似python语言中的dict(字典类型),以key value形式存储数据 Key必须是支持 或`!=`比较运算的类型,不可以是函数,map或slice map查找比线性搜素快很多,但比使用索引访问数据的类型慢100倍 map使用make()函数创建,支持 赋值的简单写法 嵌套map: 阅读全文
posted @ 2018-07-10 00:59 failymao 阅读(439) 评论(2) 推荐(0) 编辑
摘要:切片Slice在go语言中是单独的类型(指向底层的数组),不同于python(对可迭代对象操作的工具),注意区分数组和slice的区别 定义一个空slice,格式 ,这种既没有长度也没有元素赋值的类型(相比叫array) 数组的基本操作如下 ,类似与python中列表切片的操作,详见实例 使用mak 阅读全文
posted @ 2018-07-09 00:10 failymao 阅读(327) 评论(0) 推荐(0) 编辑
摘要:基本特性 格式: ,n 0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数组类型的一部分,因此具有不同长度的数组为不同的类型。 如 注意区分指向数组的指针和指针数组 数组在Go中属于值类型 数组之间可以使用 或`!= ,比较是否 阅读全文
posted @ 2018-07-08 17:50 failymao 阅读(410) 评论(0) 推荐(0) 编辑
摘要:go基础之控制语句 补充知识 指针 与其他语言不同,在Go中不支持指针运算即->运算符,而直接采用.选择符来操作指针目标对象的成员。 操作符&取变量的地址,使用*通过指针间间接访问目标对象 默认值位nil,而非NULL 实例代码如下 //指针的使用 package main import "fmt" 阅读全文
posted @ 2018-07-06 00:42 failymao 阅读(334) 评论(0) 推荐(0) 编辑
摘要:常量与运算符 常量的定义 常量的值在编译时已经确定 常量的定义格式与变量的基本相同 等号的右侧必须是常量或者常量表达式 规范: 常量定义时建议都使用大写,单词之间使用大写 便于包的外部调用 如果只限于包内部使用在常量开头使用 或者使用小写 常量与全局变量的区别 常量表达式里面必须使用常量表达式的变量 阅读全文
posted @ 2018-06-26 09:06 failymao 阅读(408) 评论(0) 推荐(0) 编辑