
GO
迷糊小财迷
这个作者很懒,什么都没留下…
展开
-
并发编程
12.并发编程12.1 并发与并行Erlang 之父 Joe Armstrong曾经以下图解释并发与并行。并发在图中的解释是两队人排队接咖啡,两队切换。并行是两个咖啡机,两队人同时接咖啡。“Concurrency is about dealing with lots of things at once. Parallelism is about doing lots of things at once.” — Rob Pike并发使并行变得容易,并发提供了一种构造解决方案的方法,并行一般伴随这多原创 2020-12-26 22:51:59 · 181 阅读 · 1 评论 -
单元测试
11.单元测试在日常开发中,我们通常需要针对现有的功能进行单元测试,以验证开发的正确性。 在go标准库中有一个叫做testing的测试框架,可以进行单元测试,命令是go test xxx。测试文件通常是以xx_test.go命名,放在同一包下面。11.1 初探Go单元测试现在假设现在需求是:完成两个复数相加,我们只需要一个函数便可以完成该任务。在开发中,我们需要对该函数进行功能测试,如何快速进行单元测试呢?鼠标放在函数上右键,选择GO:Generate Unit Tests For Functi原创 2020-12-25 23:40:10 · 191 阅读 · 0 评论 -
反射机制
反射机制10.1 反射是什么反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。Go 语言提供了一种机制在运行时更新变量和检查它们的值、调用它们的方法,但是在编译时并不知道这些变量的具体类型,这称为反射机制。10.2 反射的作用1.在编写不定传参类型函数的时候,或传入类型过多时典型应用是对象关系映射type User struct {gorm.ModelName stringAge sql.Null原创 2020-12-25 09:59:26 · 155 阅读 · 0 评论 -
异常处理
9.异常处理9.1 errorGo语言内置了一个简单的错误接口作为一种错误处理机制,接口定义如下:type error interface {Error() string}它包含一个 Error() 方法,返回值为stringGo的error构造有两种方式,分别是第一种:errors.New()err := errors.New(“This is an error”)if err != nil {fmt.Print(err)}第二种:fmt.Errorf()err := fmt.原创 2020-12-23 23:11:35 · 672 阅读 · 0 评论 -
包管理
8.包管理8.1 Go Modules是什么?Go语言通过包管理来封装模块和复用代码,这里我们只介绍Go Modules管理方法Go Modules于Go语言1.11版本时引入,在1.12版本正式支持,是由Go语言官方提供的包管理解决方案Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性8.2 Go Modules的使用方法8.2.1 环境变量首先需要设置环境变量,可以使用go env命令查看当前配置。$ go原创 2020-12-22 23:12:10 · 80 阅读 · 0 评论 -
结构体
package mainimport ( "fmt")//定义结构体type person struct { name, city string age int8}//结构函数func newPerson(name, city string, age int8) *person { return &person{ name: name, city: city, age: age, }}func main() { var p pers原创 2020-12-21 23:20:36 · 95 阅读 · 0 评论 -
Go函数
package mainimport "fmt"//函数 变量作用域//定义全局变量var num int = 10//定义函数func testGlobal() { fmt.Println("Global:", num)}func testGlobal1() { num := 100 //1先在自己函数体中查找 //2函数体中找不到就找外层的全局变量 fmt.Println("Global:", num)}//函数作为参数func add(x, y int)原创 2020-12-20 20:56:51 · 84 阅读 · 0 评论 -
Map
package mainimport ("fmt" "math/rand" )//map(映射)func main() { //声明map类型 不初始化 a就是初始值nil var a map[string]int fmt.Println(a == nil) //map初始化 a = make(map[string]int,8) fmt.Println(a==nil) //添加键值对 a["harold"] = 100 a["vv"] = 100 fmt.Println(原创 2020-12-19 23:22:50 · 231 阅读 · 1 评论 -
字典、字符串
4.字典、字符串4.1 字典map是一种较为特殊的数据结构,在任何一种编程语言中都可以看见他的身影,它是一种键值对结构,通过给定的key可以快速获得对应的value。4.1.1 如何定义字典var m1 map[string]intm2 := make(map[int]interface{}, 100)m3 := map[string]string{“name”: “james”,“age”: “35”,}在定义字典时不需要为其指定容量,因为map是可以动态增长的,但是在可以预知map原创 2020-12-18 22:41:18 · 283 阅读 · 1 评论 -
运算符、控制语句
3.运算符、控制语句3.1 运算符假定 A 值为 10,B 值为 20。3.1.1 算数运算符运算符 描述 实例相加 A + B 输出结果 30相减 A - B 输出结果 -10相乘 A * B 输出结果 200/ 相除 B / A 输出结果 2% 求余 B % A 输出结果 0++ 自增 A++ 输出结果 11– 自减 A-- 输出结果 93.1.2 关系运算符运算符 描述== 检查两个值是否相等,如果相等返回 True 否则返回 False。!= 检查两个值是否不原创 2020-12-18 09:31:22 · 119 阅读 · 0 评论 -
变量 、常量、枚举
2.变量 、常量、枚举2.1 变量变量,计算机语言能存储计算结果或表示值的抽象概念。可以通过变量名访问,变量名由字母、数字、下划线组成,其中首个字符不能为数字。声明变量的一般形式是使用 var 关键字:var identifier typevar identifier1, identifier2 type变量声明方式:指定变量类型,若没有初始化,数值类型(包括complex64/128)默认零值,bool默认false,字符串默认“”,“var a *int、var a []int、var a原创 2020-12-16 22:39:54 · 183 阅读 · 0 评论 -
Datawhale-数据类型、关键字、标识符
Go 语言的空格 Go 语言中变量的声明必须使用空格隔开,如:var age int; 语句中适当使用空格能让程序更易阅读。 无空格:fruit=apples+oranges; 在变量与运算符间加入空格,程序看起来更加美观,如:fruit = apples + oranges;Go 语言按类别有以下几种数据类型:序号 类型和描述1 布尔型布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。2 数字类型整型 int 和浮点型 f..原创 2020-12-15 23:06:25 · 613 阅读 · 1 评论 -
Datawhale-GO初探
新的改变学习 Go 语言时,要做的第一件事,都是根据自己电脑的计算架构(比如,是 32 位的计算机还是 64 位的计算机)以及操作系统(比如,是 Windows 还是 Linux),从Go 语言官网下载对应的二进制包,也就是可以拿来即用的安装包。随后,我们会解压缩安装包、放置到某个目录、配置环境变量,并通过在命令行中输入go version来验证是否安装成功。在这个过程中,我们还需要配置 3 个环境变量,也就是 GOROOT、GOPATH 和 GOBIN。这里我可以简单介绍一下。GOROOT:Go 语原创 2020-12-14 20:21:28 · 127 阅读 · 0 评论 -
GO--Hello workd
Go是一门编译型语言,Go语言的工具链将源代码及其依赖转换成计算机的机器指令(译注:静态编译)。Go语言提供的工具都通过一个单独的命令go调用,go命令有一系列子命令。最简单的一个子命令就是run。这个命令编译一个或多个以.go结尾的源文件,链接库文件,并运行最终生成的可执行文件helloworld.gopackage mainimport "fmt"func main() { fmt.Println("Hello, 世界")}执行 go run helloworld.go 会有如下原创 2020-07-07 21:50:44 · 125 阅读 · 0 评论