go从入门到实践
文章平均质量分 80
流光影下
一个爱编程的技术宅
展开
-
golang wire 依赖注入
然后将wire.exe移动到 C:\Users\leell\go\bin目录下。具体目录通过go env进行查看。原创 2024-04-27 13:27:24 · 340 阅读 · 0 评论 -
go语言数组的增删改查
在Go语言中,数组的大小是固定的,不能动态增加或删除元素,只能通过重新创建数组来修改其内容。原创 2024-03-25 11:17:25 · 430 阅读 · 0 评论 -
go数据格式-JSON、XML、MSGPack
示例解析到interface。示例通过map生成json。示例过结构体生成json。原创 2024-01-29 13:49:48 · 637 阅读 · 0 评论 -
go常用标准库Template模板
执行模板时,函数从两个函数字典中查找:首先是模板函数字典,然后是全局函数字典。一般不在模板内定义函数,而是使用Funcs方法添加函数到模板里。and函数返回它的第一个empty参数或者最后一个参数;就是说"and x y"等价于"if x then y else x";所有参数都会执行;or返回第一个非empty参数或者最后一个参数;亦即"or x y"等价于"if x then x else y";所有参数都会执行;not返回它的单个参数的布尔值的否定len返回它的参数的整数类型长度。原创 2024-01-29 09:51:06 · 722 阅读 · 0 评论 -
go标准库Context上下文
Go1.7加入了一个新的标准库context,它定义了Context类型,专门用来简化 对于处理单个请求的多个 goroutine 之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。对服务器传入的请求应该创建上下文,而对服务器的传出调用应该接受上下文。它们之间的函数调用链必须传递上下文,或者可以使用WithCancel或WithValue创建的派生上下文。当一个上下文被取消时,它派生的所有上下文也被取消。原创 2024-01-29 00:07:11 · 1351 阅读 · 0 评论 -
go语言基础strconv类型转换
strconv包实现了基本数据类型与其字符串表示的转换,主要有以下常用函数:Atoi()Itoa()、parse系列、format系列、append系列。原创 2024-01-28 21:48:00 · 1208 阅读 · 1 评论 -
go语言文件操作
os.Open()函数能够打开一个文件,返回一个*File和一个err。对得到的文件实例调用close()方法能够关闭文件。为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。原创 2024-01-28 19:48:48 · 573 阅读 · 0 评论 -
Go语言标准库log日志
Go语言内置的log包实现了简单的日志服务。原创 2024-01-28 19:30:20 · 642 阅读 · 0 评论 -
go语言标准库flag命令行参数解析
有以下两种常用的定义命令行flag参数的方法。//定义命令行参数方式1flag.StringVar(&name, "name", "张三", "姓名")flag.IntVar(&age, "age", 18, "年龄")flag.BoolVar(&married, "married", false, "婚否")flag.DurationVar(&delay, "d", 0, "延迟的时间间隔")//解析命令行参数//返回命令行参数后的其他参数//返回命令行参数后的其他参数个数。原创 2024-01-28 18:34:06 · 749 阅读 · 0 评论 -
go语言基础之time时间处理
时区(Time Zone)是根据世界各国家与地区不同的经度而划分的时间定义,全球共分为24个时区。判断两个时间是否相同,会考虑时区的影响,因此不同时区标准的时间也可以正确比较。函数能够将一个时间对象格式化输出为指定布局的文本表示形式,需要注意的是 Go 语言中时间格式化的布局不是常见的。函数获取当前的时间对象,然后从时间对象中可以获取到年、月、日、时、分、秒等信息。time 包还提供了一系列将 int64 类型的时间戳转换为时间对象的方法。包定义的一个类型,它代表两个时间点之间经过的时间,以纳秒为单位。原创 2024-01-28 18:21:32 · 810 阅读 · 0 评论 -
Go语言常用标准库fmt、格式化占位符、获取输入
fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。io.Writerw。原创 2024-01-28 18:05:41 · 1110 阅读 · 0 评论 -
go语言基础之泛型
当我们编写的是操作 Go 语言定义的特殊容器类型(slice、map和chennel)的函数。如果函数具有包含这些类型的参数,并且函数的代码并不关心元素的类型,那么使用类型参数可能是有用的。例如:返回任何类型map中所有的key// MapKeys 返回m中所有key组成的切片return s。原创 2024-01-28 17:42:21 · 1760 阅读 · 0 评论 -
Go语言基础之反射
反射是指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。支持反射的语言可以在程序编译期间将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期间获取类型的反射信息,并且有能力修改它们。Go程序在运行期间使用reflect包访问程序的反射信息。原创 2024-01-28 16:23:41 · 936 阅读 · 0 评论 -
Go语言基础之方法
/ 系统抛a[1] = 123// 自己抛panic("半径不能为负")//// 延时执行匿名函数// 延时到何时?(1)程序正常结束 (2)发生异常时// recover() 复活 恢复// 会返回程序为什么挂了err!= nil {}()fmt.Println("这里有没有执行")test03()test04()import ("fmt""os""time"op stringif err!原创 2024-01-28 16:14:45 · 1019 阅读 · 0 评论 -
Go语言基础之接口
type 接口类型名 interface{方法名1( 参数列表1 ) 返回值列表1方法名2( 参数列表2 ) 返回值列表2接口类型名:Go语言的接口在命名时,一般会在单词后面添加er,如有写操作的接口叫Writer,有关闭操作的接口叫closer等。接口名最好要能突出该接口的类型含义。方法名:当方法名首字母是大写且这个接口类型名首字母也是大写时,这个方法可以被接口所在的包(package)之外的代码访问。参数列表、返回值列表:参数列表和返回值列表中的参数变量名可以省略。原创 2024-01-28 15:44:03 · 1073 阅读 · 0 评论 -
go包与依赖管理
Go语言中支持模块化的开发理念,在Go语言中使用包(package)来支持代码模块化和代码复用。一个包是由一个或多个Go源码文件(.go结尾的文件)组成,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmtosio等。例如:使用fmt这个内置包。")通过package声明该文件归属包,包(package) 与文件夹的名称、文件的路径无关。其中:package:声明包的关键字packagename:包名,可以不与文件夹的名称一致,不能包含符号,最好与其实现的功能相对应。原创 2024-01-28 15:16:47 · 1180 阅读 · 0 评论 -
Go语言基础之单元测试
上面的基准测试只能得到给定操作的绝对耗时,但是在很多性能问题是发生在两个不同操作之间的相对耗时,比如同一个函数处理1000个元素的耗时与处理1万甚至100万个元素的耗时的差别是多少?注意,当我们修改了我们的代码之后不要仅仅执行那些失败的测试函数,我们应该完整的运行所有的测试,保证不会因为修改代码而引入了新的问题。文件中符合上述命名规则的函数,然后生成一个临时的main包用于调用相应的测试函数,然后构建并运行、报告测试结果,最后清理测试中生成的临时文件。测试覆盖率是你的代码被测试套件覆盖的百分比。原创 2024-01-28 14:42:37 · 1153 阅读 · 0 评论 -
go语言函数进阶
我们可以使用type上面语句定义了一个类型,它是一种函数类型,这种函数接收两个int类型的参数并且返回一个int类型的返回值。简单来说,凡是满足这个条件的函数都是calculation类型的函数,例如下面的add和sub是calculation类型。add和sub都能赋值给calculation类型的变量。c = add。原创 2024-01-28 14:25:17 · 466 阅读 · 0 评论 -
Go语言基础之函数
func 函数名(参数)(返回值){函数体函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。参数:参数由参数变量和参数变量的类型组成,多个参数之间使用分隔。返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用分隔。函数体:实现指定功能的代码块。// 类型相同的相邻参数,参数类型可合并。多返回值必须用括号。n := x + y。原创 2024-01-28 14:20:48 · 502 阅读 · 0 评论 -
go语言流程控制
当布尔表达式1的结果为true时,执行分支1,否则判断布尔表达式2,如果满足则执行分支2,都不满足时,则执行分支3。if判断中的else if和else都是可选的,可以根据实际需要进行选择。原创 2024-01-28 13:35:12 · 999 阅读 · 1 评论 -
go语言Map与结构体
Go语言中 map的定义语法如下其中,KeyType:表示键的类型。ValueType:表示键对应的值的类型。map类型的变量默认初始值为nil,需要使用make()函数来分配内存。其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。原创 2024-01-25 20:58:19 · 1626 阅读 · 0 评论 -
Go语言指针变量
在Go语言中对于引用类型的变量,我们在使用的时候不仅要声明它,还要为它分配内存空间,否则我们的值就没办法存储。make也是用于内存分配的,区别于new,它只用于slice、map以及chan的内存创建,而且它返回的类型就是这三个类型本身,而不是他们的指针类型,因为这三种类型就是引用类型,所以就没有必要返回他们的指针了。new函数不太常用,使用new函数得到的是一个类型的指针,并且该指针对应的值为该类型的零值。区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。原创 2024-01-25 13:26:33 · 1312 阅读 · 0 评论 -
go语言数组和切片
从输出结果可以看出,append 后的 s 重新分配了底层数组,并复制数据。及时释放不再使用的 slice 对象,避免持有过期数组,造成 GC 无法回收。另一种写法: data[:6:8] 每个数字前都有个冒号, slice内容为data从0到第6位,长度len为6,最大扩充项cap设置为8。常规slice , data[6:8],从第6位到第8位(返回6, 7),长度len为2, 最大可扩充长度cap为4(6-9)string底层就是一个byte的数组,因此,也可以进行切片操作。原创 2024-01-24 18:03:53 · 1344 阅读 · 0 评论 -
go语言基本类型
Golang 更明确的数字类型命名,支持 Unicode,支持常用数据结构。支持八进制、 六进制,以及科学记数法。标准库 math 定义了各数字类型取值范围。空指针值 nil,而非C/C++ NULL。原创 2024-01-24 17:59:18 · 1091 阅读 · 0 评论 -
go语言下划线、变量和常量
hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。第二个import就是不直接使用mysql包,只是执行一下这个包的init函数,把mysql的驱动注册到sql包里,然后程序里就可以使用sql包来访问mysql数据库了。有时候我们会将变量的类型省略,这个时候编译器会根据等号右边的值来推导变量的类型完成初始化。原创 2024-01-24 17:56:24 · 1236 阅读 · 0 评论 -
Golang内置类型和函数及接口、Init函数和main函数
Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。原创 2024-01-24 17:38:58 · 832 阅读 · 0 评论 -
go语言入门介绍 - 特征、命名、关键字、保留字、声明
Go 语言是谷歌 2009 年首次推出并在 2012 年正式发布的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。原创 2024-01-24 17:34:16 · 596 阅读 · 0 评论