golang
已收录文章:14425篇
-
日常项目中,读取各种配置文件是避免不了的,这里介绍一个能读取多种配置文件的库,viper viper读取ini文件 config := viper.New() config.AddConfigPath("./conf/") // 文件所在目录 config.SetConfigName("b") /465 收藏
-
channel 首先明确一下channel的作用:用于go协程间的通信。 go语言最大的特点就是支持高并发:goroutine和channel是支持高并发的重要组成部分。 单纯地将函数并发执行是没有意义的。函数与函数间465 收藏
-
串行调用 在用go编写web/rpc服务器的时候,经常会出现需要对下游多 个/组 服务调用rpc(或者其他比较耗时的操作)的情况。按照自然的写法,比如对下游有ABC三个调用,串行顺着写,就总共要花费465 收藏
-
使用len()函数可获取Golang中切片或数组的长度,适用于数组、切片、字符串等类型;切片调用len()返回元素个数,如[]int{1,2,3,4,5}结果为5,空切片为0;数组为固定长度,len()返回定义时的容量,未初始化元素不影响长度,如[3]int和[5]string{"a","b","c"}分别输出3和5;常用于判断是否为空,若len(slice)==0则为空;注意nil切片和空切片的len()均为0,需通过slice==nil判断是否为nil;len()是安全高效的标准做法。464 收藏
-
合理使用指针可减少内存拷贝并提升性能,尤其在处理大结构体或需修改原值时。通过传递指针而非值,避免复制大型对象,如User结构体示例所示,传指针仅复制8字节地址,显著降低开销。Go语言默认值传递,函数内无法修改原始变量,而指针允许直接操作原数据,适用于计数器递增等场景。当函数参数为指针类型时,能确保方法对接收者修改生效,如Processor的Process方法需用指针接收者以保证数据变更反映到原实例。但应避免对int、bool等小对象过度使用指针,因其传值更高效且安全;同时禁止返回局部变量地址,防止悬空指针464 收藏
-
Go语言中请求参数绑定可通过标准库或第三方库实现。2.标准库可解析查询参数和JSONBody,但代码重复且缺乏校验。3.Gin框架支持自动绑定与校验,根据Content-Type映射数据到结构体。4.mapstructure库可用于复杂结构转换。464 收藏