
GO
文章平均质量分 81
pfeiKing
安安静静地先稳住
展开
-
GO基础-并发
目录Go 程信道带缓冲的信道range 和 closeselect 语句默认选择sync.MutexGo 程Go 程(goroutine)是由 Go 运行时管理的轻量级线程。go f(x, y, z)会启动一个新的 Go 程并执行f(x, y, z)f, x, y 和 z 的求值发生在当前的 Go 程中,而 f 的执行发生在新的 Go 程中。Go 程在相同的地址空间中运行,因此在访问共享的内存时必须进行同步。sync 包提供了这种能力,不过在 Go 中并不经常用到,因为还有其它的办法(见下原创 2021-05-31 10:57:51 · 457 阅读 · 0 评论 -
GO基础-方法和接口
目录方法方法即函数方法(续)指针接收者指针与函数方法与指针重定向方法与指针重定向(续)选择值或指针作为接收者接口接口与隐式实现接口值底层值为 nil 的接口值nil 接口值空接口类型断言类型选择Stringer错误Reader图像方法Go 没有类。不过你可以为结构体类型定义方法。方法就是一类带特殊的 接收者 参数的函数。方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间。在此例中,Abs 方法拥有一个名为 v,类型为 Vertex 的接收者。package mainimpor原创 2021-05-28 20:54:26 · 252 阅读 · 0 评论 -
GO基础-struct、slice、映射
目录指针结构体结构体字段结构体指针结构体文法数组切片切片就像数组的引用切片文法切片的默认行为切片的长度与容量nil 切片用 make 创建切片切片的切片向切片追加元素Rangerange(续)映射 (`map`)映射 (`map`)映射的文法映射的文法(续)修改映射函数值函数的闭包练习:斐波纳契闭包指针Go 拥有指针。指针保存了值的内存地址。类型 *T 是指向 T 类型值的指针。其零值为 nil。var p *int& 操作符会生成一个指向其操作数的指针。i := 42p = &am原创 2021-05-27 11:10:21 · 1017 阅读 · 0 评论 -
GO基础-流程控制语言
目录forfor(续)for 是 Go 中的 “while”无限循环ifif 的简短语句if 和 elseswitchswitch 的求值顺序没有条件的 switchdeferdefer 栈forGo 只有一种循环结构:for 循环。基本的 for 循环由三部分组成,它们用分号隔开:初始化语句:在第一次迭代前执行条件表达式:在每次迭代前求值后置语句:在每次迭代的结尾执行初始化语句通常为一句短变量声明,该变量声明仅在 for 语句的作用域中可见。一旦条件表达式的布尔值为 false,循环迭原创 2021-05-25 22:11:37 · 362 阅读 · 0 评论 -
GO基础-包、变量、函数
这里写自定义目录标题包导入导出名函数函数(续)多值返回命名返回值变量变量的初始化短变量声明基本类型零值类型转换类型推导常量数值常量包每个 Go 程序都是由包构成的。程序从 main 包开始运行。本程序通过导入路径 "fmt" 和 "math/rand" 来使用这两个包。按照约定,包名与导入路径的最后一个元素一致。例如,"math/rand" 包中的源码均以 package rand 语句开始。注意: 此程序的运行环境是固定的,因此 rand.Intn 总是会返回相同的数字。 (要得到不同的数字,原创 2021-05-25 21:55:54 · 483 阅读 · 0 评论 -
Go Module创建项目
这里写自定义目录标题1 Go Module模式1.1 开启Go Module1.2 初始化项目1.3 在项目里面导包1.4 修改导入包的版本1 Go Module模式Go Module简介1.1 开启Go Module查看go env。 go env另环境变量GO111MODULE为“on”状态。go env -w GO111MODULE=on,关闭状态为“off”。1.2 初始化项目TIP:不一定需要在$GOPAHT/src目录下建立项目在建立的文件夹下面创建go.mod文件。go原创 2021-05-20 16:26:17 · 739 阅读 · 2 评论 -
GO 反射机制
一、反射机制的定义在计算机科学中,反射指计算机程序在运行时(Run Time)可以访问、检测和修改它本身状态或者行为的一种能力。二、Go语言中反射机制的定义Go 语言提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法,但是在编译时并不知道这些变量的具体类型,这称为反射机制。三、Go语言反射三大定律1、反射可以从接口值得到反射对象2、反射可以从反射对象获得接口值3、如果需要操作一个反射对象,则其值必须可以修改四、为什么需要反射机制1、场景:当函数接收到参数,但是该原创 2021-04-20 10:03:42 · 348 阅读 · 0 评论 -
GO 错误处理与资源管理
文章目录0 前言1、资源管理与出错处理1.1 defer调用简单例子1简单例子22、出错处理概念2.1 自定义error3、服务器统一出错处理3.1 实现统一的错误处理逻辑4、panic和recover4.1 panic4.2 recover0 前言合理,成对使用1、资源管理与出错处理1.1 defer调用go语言是通过defer调用来实现资源管理的确保调用在函数结束时候发生简单例子1package mainimport "fmt"func tryDefer(){ defer原创 2020-11-18 19:32:49 · 414 阅读 · 0 评论 -
GO 函数式编程
文章目录1、函数式编程1.1 函数与闭包1.2 函数式编程 VS 函数指针1.2.1 “正统”函数式编程1.2.2 闭包1.2.2.1 python中的闭包1.2.2.2 c++中的闭包1.2.2.3 java中的闭包函数式编程样例一2.1 斐波那契数列2.2 为函数实现接口2.3 使用函数遍历二叉树2.4 go语言闭包的应用1、函数式编程1.1 函数与闭包经典样例func adder() func (value int) int{ sum := 0 return func(value in原创 2020-11-15 20:58:34 · 568 阅读 · 0 评论 -
GO 面向接口理论与实践
文章目录1、duck typing的概念1.1 接口1.2 duck typing概念1.2.1 python中的duck typing1.2.2 c++中的duck typing1.2.3 java中的类似代码1.2.4 go中的duck typing2、接口的定义和实现2.1 接口的实现3、接口的值类型3.1 接口变量里面有什么?3.2 获取接口里面的类型3.2.1 type assertion(类型断言)1、duck typing的概念1.1 接口相比较传统语言来说,go语言的接口更加的灵活t原创 2020-11-15 20:53:38 · 334 阅读 · 0 评论 -
GO 面向对象基础与实践
文章目录0、前言1、结构体和方法1.1 定义结构体1.2 结构体声明,初始化1.3 结构体中方法的定义与使用2、包和封装2.1 方法的封装2.2 包3、扩展已有类型4、GOPATH以及目录结构4.1 GOPATH环境变量4.2 获取第三方库-go get0、前言 go语言仅支持封装,不支持继承和多态,而是通过接口形式实现多态。结构体到底是创建在堆上还是栈上,我们是不需要知道的,因为后面有完善的GC,当编译器看到如果返回的是变量,那么就认为是不需要将其保留给外部使用的,但是如果加上了取地址原创 2020-11-13 10:32:00 · 311 阅读 · 0 评论 -
GO 语言精准入门
目录一、变量1、语法:var 变量名称 变量类型2、如果定义变量的时候没有进行初始化,会使用默认初始值3、初始化声明 :=,下面两个方式是等价的4、因式分解关键字写法(一般用于全局变量)二、常量1、语法:const 常量名称 常量类型2、特殊的常量iota三、运算符四、基本逻辑语句1、条件语句2、循环语句五、函数1、语法2、和C++的不同之处3、注意点4、闭包5、方法一、变量1、语法:var 变量名称 变量类型var.原创 2020-10-05 21:19:53 · 410 阅读 · 1 评论