大家好,我是frank,「Golang语言开发栈」公众号作者。 01介绍 defer的使用方式是在其后紧跟一个函数调用或方法调用,确保在其所在的函数体返回之前执行其调用的函数或方法。 在Go语言中,defer一般用于资源释放,或使用defer调用一个匿名函数,在匿名函数中使用recover()处理异常panic。 在使用defer时,也很容易遇到陷阱,本文我们介绍使用defer时有哪些陷阱。 02defer陷阱 defer语句不可以在return语句之后。 示例代码: funcmain(){ name:=GetUserName("phper") fmt.Printf("name:%s\n"...

  JdsBrEUzos4u   2024年01月21日   34   0   0 Go

大家好,我是frank,「Golang语言开发栈」公众号作者。 01介绍 在Go语言项目开发中,我们经常会使用哈希表map,它的时间复杂度是O(1),Go语言中的map使用开放寻址法避免哈希碰撞。 Go语言中的map并非原子操作,不支持并发读写操作。 Go官方认为map在大多数情况下是使用map进行并发读操作,仅在少数情况下是使用map进行并发读写操作。 如果Go语言中的map原生支持并发读写操作,在操作时需要先获取互斥锁,反而会降低只有并发读操作时的性能。 在需要并发读写操作map时,可以结合sync包中的互斥锁一起使用。 02并发读写map Go支持并发读map,不支持并发读写map。 示...

  JdsBrEUzos4u   2024年01月14日   27   0   0 Go

大家好,我是frank,「Golang语言开发栈」公众号作者。 01介绍 在Go语言中,数组固定长度,切片可变长度;数组和切片都是值传递,因为切片传递的是指针,所以切片也被称为“引用传递”。 读者朋友们在使用Go语言开发项目时,或者在阅读Go开源项目源码时,发现很少使用到数组,经常使用到切片。 本文通过讲解Golang切片的一些特性,介绍Go语言为什么建议多使用切片,少使用数组。 02切片 切片的底层是数组,它是可变长度,可以在容量不足时自动扩容。 typeSliceHeaderstruct{ Datauintptr Lenint Capint } 阅读上面这段代码,SliceHead...

  JdsBrEUzos4u   2024年01月06日   29   0   0 Go

大家好,我是frank,「Golang语言开发栈」公众号作者。 01介绍 在Go语言中,数组是一块连续的内存,数组不可以扩容,数组在作为参数传递时,属于值传递。 数组的长度和类型共同决定数组的类型,不同类型的数组之间不可以比较,否则在编译时会报错。 因为数组的一些特性,我们在Go项目开发中,很少使用数组。本文我们介绍一下数组的特性。 02数组 声明方式 在Go语言中,数组的声明方式有三种。 示例代码: funcmain(){ vararr1[2]int vararr2=[2]int{1,2} vararr3=[...]int{1,2} fmt.Println(arr1) fmt.Pr...

  JdsBrEUzos4u   2023年12月31日   27   0   0 Go
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~