golang
已收录文章:14076篇
-
使用指针表示可选值是Go语言常见做法,因指针可为nil,能自然表达“值不存在”语义。在结构体中,将字段设为指针类型(如int)可实现可选字段,例如typeUserstruct{Namestring;Ageint},Age为nil时表示未设置。通过取地址&age赋值,可创建可选值,亦可封装Int(vint)int等工具函数简化操作。访问时需先判空,避免panic,如ifuser.Age!=nil{fmt.Println(user.Age)},并可结合默认值处理。在JSON序列化中,nil指针对应null,反487 收藏
-
Go语言中类型转换需显式声明,不同名称的类型即使底层相同也需显式转换。基本类型间如int与float64需显式转换,可能丢失精度;string与[]byte可直接互转;数值转string应使用strconv包。自定义类型如typeMyIntint不等同于int,必须显式转换,且不继承原类型方法。接口转换依赖类型断言val,ok:=iface.(Type)以避免panic,空接口取值需转回具体类型。指针类型间不可直接转换,仅能通过unsafe.Pointer转换相同底层类型的指针,但会降低安全性,应慎用。整487 收藏
-
迭代器模式通过接口定义统一遍历行为,封装集合内部结构,支持多种遍历策略、懒加载和内存高效处理,适用于复杂数据结构或大型数据流场景。487 收藏
-
用Golang写基础爬虫需发送HTTP请求并解析HTML。首先通过net/http库发起GET请求获取网页内容,如http.Get读取响应体;接着使用goquery库解析HTML,类似jQuery语法提取h1标题和p段落文本;最后将数据结构化为JSON输出。注意设置User-Agent、处理超时与编码,遵守robots.txt规则。完整流程包括错误处理、资源释放及数据存储,可扩展并发与反爬应对。487 收藏
-
循环依赖需通过重构解决。当A、B包互相导入时,应将共享类型抽离至独立包(如model),并用接口实现依赖倒置,如service定义UserRepository接口,repo包实现,从而形成单向依赖链handler→service→repository,避免循环。487 收藏
-
1.背景 我们基于 go mod 机制来管理我们项目的依赖库版本,其中 go.mod 记录了依赖库版本信息。 一般第三方依赖库(包括公司内网gitlab上的依赖库),其源码都不被包含在我们的项目内部,而是486 收藏