自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 golang--context(上下文)

总之,context.Context 在 Golang 并发编程和网络编程中扮演着重要的角色,它提供了一种优雅且安全的方式来管理协程、控制请求生命周期、取消协程执行和处理超时。在并发编程和网络编程中,context.Context 是非常重要的一部分,它可以帮助开发者优雅地管理协程之间的通信、同步和控制。函数可以创建一个带有取消信号的 context.Context 对象,并使用返回的 cancel 函数来取消这个上下文对象。函数创建一个空的 context.Context 对象,然后可以使用。

2023-08-08 15:55:20 210

原创 golang--interface(接口)

其他类型可以实现接口的方法,从而成为该接口的实例。你学会了如何定义接口、实现接口的方法,以及使用接口进行类型断言和类型判断等操作。上述代码中,Process函数的参数类型是空接口interface{},可以接收任意类型的参数。上述代码定义了一个Writer接口,该接口有一个Write方法,接受一个[]byte类型的参数,并返回一个int和error类型的结果。在Go语言中,其他类型可以实现接口的方法,从而成为该接口的实例。在代码中使用接口时,可以使用接口类型作为变量的类型、函数的参数类型或函数的返回类型。

2023-06-10 12:18:08 307

原创 golang--defer(延迟调用)

在上述代码中,fmt.Println("Deferred statement")被延迟执行,直到包含defer语句的函数返回之前,才会执行。在上述代码中,使用defer mutex.Unlock()在函数返回前释放锁,无论函数执行过程中是否发生异常,都能保证锁的释放。在上述代码中,defer fmt.Println(i)的参数i在defer语句执行时的值是0,而不是在函数执行完毕时的值1。需要注意的是,defer语句中的函数参数在defer语句执行时就会被求值,而不是在函数执行完毕时才求值。

2023-06-09 16:41:50 310

原创 golang--panic

当程序遇到无法处理的错误或异常时,可以触发panic,并停止当前函数的执行,然后逐层向上返回,直到被recover捕获或程序终止。在一些特殊情况下,当发生错误时,我们希望程序能够立即停止,并输出错误信息,而不是继续执行下去。这种情况下,可以使用panic来触发错误,然后在程序的顶层函数中使用recover来捕获并处理这些错误。当程序执行到panic语句时,当前函数的执行将立即停止,任何后续语句都不会被执行,然后控制权将传递给调用该函数的函数。

2023-05-25 23:42:31 2185 1

原创 golang--sync包

本文将详细介绍sync包中常用的几个类型和函数,包括互斥锁、读写锁、条件变量和等待组,帮助你更好地理解和应用sync包。通过本文的介绍,你应该对sync包中的互斥锁、读写锁、条件变量和等待组有了更深入的理解。互斥锁(Mutex)是最常用的同步机制,用于保护临界区,防止多个goroutine同时访问共享资源,保证数据的一致性。sync包中的Mutex类型提供了互斥锁的基本操作。使用sync.Mutex声明一个互斥锁变量,然后通过Lock方法获取锁,使用defer延迟解锁,确保即使发生异常,也能释放锁。

2023-05-20 00:21:13 477 1

原创 golang--select

它允许在多个通信操作中选择一个可用的操作进行执行,从而实现对并发任务的控制。本文将详细介绍select语句的语法、用法和相关注意事项,帮助你更好地理解和应用select语句。通过本文的介绍,你应该对Go语言中的select语句有了更深入的理解。select语句是Go语言中强大的并发编程机制,它能够实现多通道选择、超时控制和任务取消等功能。如果有多个case可用,那么选择其中一个进行执行,并且选择是随机的。select语句的执行过程是非阻塞的,即使在执行一个case时,其他case的评估也会同时进行。

2023-05-20 00:03:54 569

原创 golang--sync.map(安全字典)

sync.Map是一种并发安全的映射数据结构,它提供了高效的并发访问方式,避免了显式的锁操作。在编写多个goroutine并发访问共享数据的程序时,使用sync.Map能够简化并发编程的复杂性,提高程序的性能和可靠性。相比于传统的map类型,sync.Map的设计目标是提供高效的并发读写操作,尤其适用于读多写少的场景。2.无需加锁:与传统的map不同,sync.Map使用了一种特殊的并发安全算法,避免了锁的使用。3.动态增长:sync.Map可以动态地增长和收缩内部的数据结构,以适应不同的并发负载。

2023-05-18 23:39:15 3358

原创 golang--map(字典)

掌握 Map 的基本操作、遍历方式和注意事项,可以提高编程的效率和代码的可读性。键和值可以是任意类型的数据,但键必须是可比较的类型(例如,基本类型、字符串、结构体、数组等),而值可以是任意类型。Map 是无序的,遍历 Map 的键值对的顺序是不确定的。对我的文章认可或感兴趣的朋友,还可以搜索公众号「 码道程工 」,查看更多优秀的文章。Map 的键必须是可比较的类型,不能使用切片、函数和包含切片的结构体作为键。编程改变世界,创造无限可能~~💪🏻。

2023-05-18 23:24:19 428 1

原创 golang--channel(通道)

通过合理地使用 Channel,可以简化并发编程的复杂性,提高程序的可读性和可维护性。关闭 Channel 后,对于已关闭的 Channel,再次发送数据将引发 panic,而对已关闭的且无数据可读的 Channel 进行接收操作将立即返回零值。默认情况下,Channel 的发送和接收操作都是阻塞的,即在发送或接收操作完成前,协程会被阻塞。在使用 Channel 时,需要避免产生死锁的情况,例如协程之间相互等待对方发送或接收数据的情况。

2023-05-17 23:19:05 295 1

原创 golang--slice(切片)

切片的长度表示切片中当前存储的元素个数,它不能超过切片的容量。切片可以通过设置下限和上限来截取一个新的切片,语法为slice[start:end],其中start和end表示切片的元素索引,如果省略start,则默认为0,如果省略end,则默认为切片的长度。切片可以使用copy()函数来复制另一个切片的所有元素,语法为copy(dst, src),其中dst表示目标切片,src表示源切片。对切片再次截取时,新切片和原切片会共享底层数组,所以修改其中一个切片的元素会影响另一个切片。

2023-05-14 22:30:43 1320 3

原创 为什么后端工程师一定要学Golang语言~~

golang特性简介

2023-05-14 10:52:02 182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除