golang
已收录文章:92篇
-
答案:Go语言中通过Gin等Web框架实现路由分组和中间件。使用Group()方法创建带公共前缀的路由组,提升代码结构清晰度;中间件为gin.HandlerFunc类型函数,用于处理请求前后逻辑,如日志、认证等。通过Use()注册全局或分组中间件,单个路由可直接传参中间件。c.Next()继续执行后续处理器,c.Abort()中断流程。示例展示了/api/v1和/admin分组,分别绑定对应处理器,并为admin组添加authMiddleware。全局可注册loggerMiddleware,实现全链路日志229 收藏
-
指针数组是元素为指针的数组,用于存储变量地址以避免复制开销。声明如varptrArray[3]*int,需初始化指向有效变量,如ptrArray:=[3]*int{&a,&b,&c}。可通过*ptrArray[i]访问值。常用切片形式[]*int动态添加元素,遍历修改原值。结构体指针数组如[]*Person可提升性能,直接修改字段如people[0].Age=31,但需防空指针。227 收藏
-
答案:基于AES-256-CBC模式使用crypto/aes和crypto/cipher库实现文件加解密,需生成随机IV并采用PKCS7填充,加密时将IV写入文件头,解密时先读取IV并用相同密钥解密,注意密钥安全与IV唯一性。218 收藏
-
使用Golang管理ContainerRegistry镜像主要通过调用RegistryAPI或借助go-containerregistry库实现;1.利用net/http发送GET请求获取镜像标签列表;2.通过/v2/name/manifests/tag获取摘要信息;3.使用DELETE方法删除镜像(需启用删除支持);4.go-containerregistry库简化了镜像拉取、推送等操作,无需Dockerdaemon;5.对于AWSECR,需通过AWSSDK获取临时Token并用于BasicAuth;6211 收藏
-
var是Go语言基础变量声明关键字,适用于函数内外,支持指定类型、自动推断、多变量及块状集中声明;2.未初始化变量获零值,且必须使用否则编译报错;3.区别于短声明:=,var更通用,而:=仅限函数内且需首次声明。210 收藏
-
在Go中使用指针切片可节省内存、共享数据和表达nil语义,适用于大对象或需修改原始值场景;声明如[]*int,初始化时注意避免循环变量地址陷阱,遍历时需判空防panic,正确管理指针生命周期以确保安全与性能。209 收藏