golang
已收录文章:14427篇
-
ioutil包曾用于简化文件操作,如ReadFile读取、WriteFile写入和TempFile创建临时文件,适合处理配置、日志等场景;尽管Go1.16后推荐使用os包中功能一致的新函数以提升维护性,但理解其用法仍有助于维护旧代码。377 收藏
-
正确使用reflect.Ptr的Elem()方法解引用指针,可逐层获取目标值并修改可设置的变量,需确保值可寻址且调用前验证Kind或CanElem。377 收藏
-
Golang实现JWT认证的核心是生成带用户身份信息的签名Token并验证其有效性,首先需使用github.com/golang-jwt/jwt/v5库定义包含用户ID、角色等信息并嵌入jwt.RegisteredClaims的自定义结构体MyClaims,接着通过HS256算法和密钥生成Token,再在后续请求中解析和验证Token的签名、过期时间及声明,确保请求合法性,该方式无状态且适合分布式系统,实际应用中常结合中间件从Authorization头提取Token进行验证,并将用户信息存入上下文供后续377 收藏
-
Go通过struct和interface实现了面向对象编程的核心思想。struct用于定义数据结构并模拟继承,如typeStudentstruct{Person}实现字段嵌套;interface则通过方法签名隐式实现行为抽象,如typeSpeakerinterface{Speak()};两者协作支持多态,如函数SaySomething(sSpeaker)可接受不同类型的参数并调用对应方法,从而实现封装、继承与多态三大特性。377 收藏
-
type在Go中有类型定义和类型别名两种核心用途,区别如下:1.类型定义创建全新类型,不能与原类型直接赋值,用于封装、提高可读性和类型安全;2.类型别名仅是已有类型的别名,可互换使用,用于简化表达或重构过渡;此外type还可定义结构体、接口及组合类型命名。377 收藏
-
pkg/errors是一个流行的Go错误处理库,用于增强错误的可追溯性。它通过errors.New()和errors.Errorf()创建带堆栈信息的错误,并支持使用errors.Wrap()包装已有错误以附加上下文。打印完整堆栈需使用fmt.Printf("%+v",err),提取原始错误可用errors.Cause()或结合errors.As()进行类型判断。此外,它兼容Go1.13的Unwrap方法,支持标准库的errors.Is()和errors.As()进行错误断言和提取,便于构建复杂错误处理逻377 收藏