go
文章平均质量分 72
小龙加油!!!
在学习中总结自己
展开
-
18、golang时间管理
时间是非常重要的,离开了时间,几乎没有哪个生产环境数据能够有意义。在Go语言中,时间定义为Time结构体。原创 2024-01-13 20:27:00 · 697 阅读 · 1 评论 -
17、 序列实例化
serialization 序列化:将内存中对象存储下来,把它变成一个个字节。转为二进制数据deserialization 反序列化:将文件的一个个字节恢复成内存中对象。从二进制数据中恢复序列化:不管你是什么类型的实例,我都要把你变成字节序列反序列化:把字节序列能够还原成原来类型的实例序列化保存到文件就是持久化。可以将数据序列化后持久化,或者网络传输;也可以将从文件中或者网络接收到的字节序列反序列化。我们可以把数据和二进制序列之间的相互转换称为二进制序列化、反序列化,把数据和字符序列之间的。原创 2024-01-13 20:25:58 · 1071 阅读 · 0 评论 -
16、面向对象
实现了以上特征的语言,才能成为面向对象编程范式语言。 严格意义来说,Go语言就是不想实现面向对象编程范式。但是面向对象又有一些不错的特性,Go语言通过组合的方式实现了类似的功能。Go语言实现了一种非常有自我特征的面向对象。原创 2024-01-03 13:07:21 · 543 阅读 · 0 评论 -
15、异常处理
/ 定义一个实现了error接口的自定义错误类型 errorStrings string// 实现 errorString 的 Error 方法,使其满足 error 接口return e.s// New 函数用于创建并返回一个新的 errorString 实例,接受一个字符串参数作为错误信息// 创建一个 errorString 类型的变量 e,并初始化其值为 "错误理由1"var e = errorString{"错误理由1"}原创 2024-01-03 13:05:08 · 359 阅读 · 0 评论 -
14、接口
接口interface,是一组行为规范的集合,就是定义一组未实现的函数声明。谁使用接口就是参照接口的方法定义实现它们。 Go语言中,使用组合实现对象特性的描述。对象内部使用结构体内嵌组合对象应该具有的特性,对外通过接口暴露能使用的特性。 Go语言的接口设计是非侵入式的,接口编写者无需知道接口被哪些类型实现。而接口实现者只需知道实现的是什么样子的接口,但无需指明实现哪一个接口。编译器知道最终编译时使用哪个类型实现哪个接口,或者接口应该由谁来实现。原创 2024-01-02 19:55:41 · 381 阅读 · 0 评论 -
13、结构体
使用type定义结构体,可以把结构体看做类型使用。必须指定结构体的字段(属性)名称和类型。原创 2024-01-02 19:55:16 · 937 阅读 · 0 评论 -
go函数练习
编写一个函数,接受一个参数n,n为正整数。至少使用递归函数完成一次。原创 2023-12-30 19:24:50 · 425 阅读 · 0 评论 -
12、defer
在某函数中使用defer语句,会使得defer后跟的语句进行延迟处理,当该函数即将返回时,或发生panic时,defer后语句开始执行。注意os.Exit不是这两种情况,不会执行defer。 同一个函数可以有多个defer语句,依次加入调用栈中(LIFO),函数返回或panic时,从栈顶依次执行defer后语句。执行的先后顺序和注册的顺序正好相反,也就是后注册的先执行。defer意思是推迟、延迟。语法很简单,就在正常的语句前加上defer就可以了。defer后的语句必须是一个函数或方法的调用。原创 2023-12-30 19:23:34 · 376 阅读 · 0 评论 -
11、 递归,匿名函数
递归是一种很自然的表达,符合逻辑思维递归相对运行效率低,每一次调用函数都要开辟栈帧递归有深度限制,如果递归层次太深,函数连续压栈,栈内存就可能溢出了如果是有限次数的递归,可以使用递归调用,或者使用循环代替,循环代码稍微复杂一些,但是只要不是死循环,可以多次迭代直至算出结果绝大多数递归,都可以使用循环实现即使递归代码很简洁,但是能不用则不用递归。原创 2023-12-29 15:25:13 · 852 阅读 · 0 评论 -
10、函数
func 函数名(参数列表) [(返回值列表)]{函数体 (代码块)[return 返回值]这里[]表示其中的内容可有可无函数名就是标识符,命名要求一样定义中的参数列表称为形式参数,只是一种符号表达(标识符),简称形参返回值列表可有可无,需要return语句配合,表示一个功能函数执行完返回的结果函数名(参数列表) [(返回值列表)] 这部分称为函数签名Go语言中形参也被称为入参,返回值也被称为出参。原创 2023-12-29 15:24:15 · 826 阅读 · 0 评论 -
数据结构-map
hash哈希是一种算法。原创 2023-11-21 16:29:51 · 251 阅读 · 0 评论 -
8、数据结构-字符串、编码集
fmt.Println(a, b, a+b) // 为什么类型不同,可以相加?原因是在源码中定义了 type byte = uint8 ,byte是uint8的别名。别名说明就是uint8的另外一个名字,和uint8是一回事fmt.Println(a, c, a + c) // 可以吗?为什么?答案是不可以。原因就是Go原因不允许不同类型随便运算。就算我们眼睛看到可以,也不行,必须强制类型转换,type myByte uint8 // 类型定义。原创 2023-11-14 10:27:44 · 204 阅读 · 0 评论 -
7、线性数据结构-切片
var s1 []int //长度、容量为0的切片,零值var s2 = []int{} //长度、容量为0的切片,字面量定义var s3 = []int{1,3,5} //字面量定义,长度、容量都是3var s4 = make([]int,0) //长度、容量都为0的切片,make([]T,length)var s5 = make([]int,3,5) //长度为3,容量为5,底层数组长度为5,元素长度为3,所以显示[0,0,0]使用切片要关注容量cap和长度len两个属性。原创 2023-11-10 16:09:26 · 213 阅读 · 1 评论 -
6、线性数据结构-数组
/ 注意下面2种区别var a0 [3]int // 零值初始化3个元素的数组var a1 = [3]int{} // 零值初始化3个元素的数组var a2 [3]int = [3]int{1, 3, 5} // 声明且初始化,不推荐,啰嗦var a3 = [3]int{1, 3, 5} // 声明且初始化,推荐a5 := [...]int{10, 30, 50} // ...让编译器确定当前数组大小a6 := [5]int{100, 200} // 顺序初始化前面的,其余用零值填充。原创 2023-11-09 09:37:31 · 184 阅读 · 0 评论 -
4、数据结构
日常用的四种。原创 2023-11-06 16:22:47 · 183 阅读 · 0 评论 -
3.程序控制
Go语言中,花括号一定要跟着if、for、func等行的最后,否则语法出错。原创 2023-11-06 16:22:09 · 63 阅读 · 0 评论 -
go语法入门2
使用双引号或反引号引起来的任意个字符。它是字面常量。原创 2023-11-06 16:19:41 · 186 阅读 · 1 评论 -
go语法入门1
/ 单行注释/* xxxx */ 编译器忽略该区间,其间都被认为是注释内容。虽然Go支持,但很少使用,一般都用多行//原创 2023-10-03 23:58:11 · 223 阅读 · 0 评论