go语言context包
摘要:context包是在go1.7版本中引入到标准库中的 context可以用来在goroutine之间传递上下文信息,相同的context可以传递给运行在不同goroutine中的函数,上下文对于多个goroutine同时使用是安全的 context被当作第一个参数(官方建议),并且不断透传下去,基本
阅读全文
posted @
2023-08-18 16:57
自然洒脱
阅读(55)
推荐(0) 编辑
go语言通道
摘要:核心数据结构 源码runtime/chan.go/makechan Channel底层是一个先进先出的环形队列(固定大小环形数组实现) full或empty就会阻塞 send发送, recv接收并移除 sendx表示最后一次插入元素的index recvx表示最后一次接收元素的index 发送、接收
阅读全文
posted @
2023-08-16 14:29
自然洒脱
阅读(45)
推荐(0) 编辑
go语言GMP模型
摘要:Robert Griesemer、Rob Pike、Ken Thompson三位Go语言创始人,对新语言商在讨论时,就决定了 要让Go语言成为面向未来的语言。当时多核CPU已经开始普及,但是众多“古老”编程语言却不能很好的 适应新的硬件进步,Go语言诞生之初就为多核CPU并行而设计。 Go语言协程中
阅读全文
posted @
2023-08-15 15:24
自然洒脱
阅读(100)
推荐(0) 编辑
go语言mongodb操作
摘要:MongoDB属于非关系型数据库,它是由C++编写的分布式文档数据库。内部使用类似于Json的bson二 进制格式。 官方文档:https://www.mongodb.com/docs/drivers/go/current/fundamentals/ 相关文档:https://www.w3cscho
阅读全文
posted @
2023-08-03 09:41
自然洒脱
阅读(482)
推荐(0) 编辑
go语言gorm的CRUD
摘要:插入 如果表不存在,则插入失败 type Student struct { ID int // 缺省主键bigint AUTO_INCREMENT Name string `gorm:"size:48"` //`gorm:"not null;type:varchar(48);comment:姓名"`
阅读全文
posted @
2023-07-26 18:30
自然洒脱
阅读(81)
推荐(0) 编辑
go语言gorm
摘要:ORM 对象关系映射(Object Relational Mapping,ORM)。指的是对象和关系之间的映射,使用面向对象的 方式操作数据库。 关系模型和Go对象之间的映射 table => struct ,表映射为结构体 row => object ,行映射为实例 column => prope
阅读全文
posted @
2023-07-24 21:39
自然洒脱
阅读(95)
推荐(0) 编辑
go语言mysql驱动
摘要:连接数据库是典型的CS编程,服务器端被动等待客户端建立TCP连接,并在此连接上进行特定的应用层 协议。但一般用户并不需要了解这些细节,这些都被打包到了驱动库当中,只需要简单的调用打开就可以指定协议连接到指定的数据库。 数据库的种类和产品太多,协议太多,Go官方很难提供针对不同数据库的驱动程序,往往由
阅读全文
posted @
2023-07-23 13:02
自然洒脱
阅读(104)
推荐(0) 编辑
go语言log相关
摘要:log包 Go标准库中有log包,提供了简单的日志功能。 输出 格式输出 换行输出 解释 log.Print() log.Printf() log.Println() 类似fmt.Print* log.Fatal() log.Fatalf() log.Fatalln() 相当于log.Print*
阅读全文
posted @
2023-07-21 17:59
自然洒脱
阅读(132)
推荐(0) 编辑
go语言包管理
摘要:包 包由多个文件和目录组成 使用 package <包名> 来定义包名 包名一般都采用小写,符合标识符要求 当前目录名和 package <包名> 中的包名不需要一致,但最好保持一致 同级文件归属一个包,就是说每个包目录的当前目录中,只能统一使用同一个package的包名,否则编译出错 一般来说,开
阅读全文
posted @
2023-07-21 10:56
自然洒脱
阅读(327)
推荐(0) 编辑
go语言时间相关
摘要:在Go语言中,时间定义为Time结构体。 var t = time.Now() fmt.Printf("%T\n", t) // time.Time fmt.Printf("%v %+[1]v\n", t) // 2022-10-06 19:35:00.1963422 +0800 CST m=+0.
阅读全文
posted @
2023-07-10 20:27
自然洒脱
阅读(81)
推荐(0) 编辑
go语言序列化和反序列化
摘要:序列化需求 内存中的map、slice、array以及各种对象,如何保存到一个文件中? 如果是自己定义的结构体的实 例,如何保存到一个文件中? 如何从文件中读取数据,并让它们在内存中再次恢复成自己对应的类型的实例? 要设计一套协议,按照某种规则,把内存中数据保存到文件中。文件是一个字节序列,所以必须
阅读全文
posted @
2023-07-10 15:29
自然洒脱
阅读(561)
推荐(0) 编辑
go语言的"面向对象"
摘要:面向对象定义 面向对象三要素: 封装:将属性(数据)和方法(操作)封装,提供访问控制,隐藏实现细节,暴露该暴露的 继承:子类可以从父类直接获得属性和方法,减少重复定义。子类中如果与父类不同,可以自己定 义新的属性和方法,也可以覆盖同名的属性和方法 多态:前提是继承和覆盖,使得子类中虽然使用同一个方法
阅读全文
posted @
2023-07-05 20:09
自然洒脱
阅读(83)
推荐(0) 编辑
go语言结构体排序
摘要:排序接口 从接口定义来看,要实现某类型的排序 要知道有多少个元素 2个指定索引的元素怎么比较大小,索引i的元素小于索引j的值返回true,反之返回false 如何交换指定索引上的元素 那么自定义类型,要想排序,就要实现sort包中该接口。 结构体排序 假设有N个学生,学生有姓名和年龄,按照年龄排序结
阅读全文
posted @
2023-07-05 19:53
自然洒脱
阅读(154)
推荐(0) 编辑
go语言异常处理
摘要:异常处理 Go的设计者认为其它语言异常处理太过消耗资源,且设计和处理复杂,导致使用者不能很好的处理错误,甚至觉得异常和错误处理起来麻烦而被忽视、忽略掉,从而导致程序崩溃。 为了解决这些问题,Go将错误处理设计的非常简单 函数调用,返回值可以返回多值,一般最后一个值可以是error接口类型的值 如果函
阅读全文
posted @
2023-07-04 17:24
自然洒脱
阅读(30)
推荐(0) 编辑
go语言接口
摘要:接口定义 接口interface,和Java类似,是一组行为规范的集合,就是定义一组未实现的函数声明。谁使用接口就 是参照接口的方法定义实现它们。 type 接口名 interface { 方法1 (参数列表1) 返回值列表1 方法2 (参数列表2) 返回值列表2 ... } 接口命名习惯在接口名后
阅读全文
posted @
2023-07-04 11:14
自然洒脱
阅读(44)
推荐(0) 编辑
go语言结构体(二)
摘要:匿名结构体 标识符直接使用struct部分结构体本身来作为类型,而不是使用type定义的有名字的结构体的标识符。 可以使用 var 、 const 、 := 来定义匿名结构体。 type定义结构体的标识符,可以反复定义其结构体实例,但是匿名结构体是一次性的。 匿名结构体,只是为了快速方便地得到一个结
阅读全文
posted @
2023-07-03 16:37
自然洒脱
阅读(29)
推荐(0) 编辑
go语言结构体(一)
摘要:结构体 Go语言的结构体有点像面向对象语言中的“类”,但不完全是,Go语言也没打算真正实现面向对象范式。 定义 使用type定义结构体,可以把结构体看做类型使用。必须指定结构体的字段(属性)名称和类型。 type User struct { id int name, addr string // 多
阅读全文
posted @
2023-07-03 14:23
自然洒脱
阅读(23)
推荐(0) 编辑
go语言递归函数及defer
摘要:递归函数 简单来说,递归就是函数自己调用自己。有2种实现方式,一种是直接在自己函数中调用自己,一种是间接在自己函数中调用的其他函数中调用了自己。 递归函数需要有边界条件、递归前进段、递归返回段 递归一定要有边界条件,当边界条件不满足时,递归前进;当边界条件满足时,递归返回 func fib(n in
阅读全文
posted @
2023-06-27 10:11
自然洒脱
阅读(144)
推荐(0) 编辑
go语言函数作用域及匿名函数
摘要:作用域 函数会开辟一个局部作用域,其中定义的标识符仅能在函数之中使用,也称为标识符在函数中的可见范围。 这种对标识符约束的可见范围,称为作用域。 对外不可见、向内穿透、就近原则。 1、语句块作用域 if、for、switch等语句中定义的变量,可以认为就是该语句块的变量,作用域仅在该语句块中。if、
阅读全文
posted @
2023-06-25 15:10
自然洒脱
阅读(85)
推荐(0) 编辑
go语言函数调用及原理
摘要:Go函数 由若干语句组成的语句块、函数名称、参数列表、返回值构成,它是组织代码的最小单元 完成一定的功能 函数的作用 结构化编程对代码的最基本的封装,一般按照功能组织一段代码 封装的目的为了复用,减少冗余代码 代码更加简洁美观、可读易懂 函数的分类 内建函数,如make、new、panic等 库函数
阅读全文
posted @
2023-06-19 15:28
自然洒脱
阅读(153)
推荐(0) 编辑