golang
来一个天天向上
这个作者很懒,什么都没留下…
展开
-
【golang】使用reflect实现根据json tag对结构体数组排序
需求描述:调用方通过指定结构体某字段(如示例1中的project_id),后端服务基于该字段排序后将结构返回;难点:后端视角与前端视角不一样,对于指定的字段,不能直接排序解决方法:法1:列举法法2:反射机制示例1:// 带json tag的结构体type Data struct { ProjectId string `json:"project_id,omitempty"` ProjectName string `json:"project_name,omitempty"`}//原创 2022-04-15 10:11:24 · 667 阅读 · 0 评论 -
[golang]给slice赋值或者遍历slice得到的结果不是预期结果
问题根源: 存的是指针(地址)还是变量值,变量值变化 != 地址变化给slice赋值结果不预期示例: var array []int // slice不初始化,需要结合append使用;直接使用会panic var pointerArray []*int for i := 0; i < 3; i++ { array = append(array, i) } for _, v := range array { pointerArray = append(pointerArray,原创 2022-04-12 20:21:31 · 886 阅读 · 0 评论 -
【golang】Functional Options 让调用更简洁
A nice way to deal with setting options in a Go package接口设计目标:接口调用理应尽可能简洁;相比直接使用结构体初始化接口参数,functional-options初始化方式可以做的更好如下两种方式的默认调用func NewServer(cfg Config) { // 根据cfg初始化}NewServer(Config{}) // 调用默认配置,调用必须传入cfgfunc NewServer(opt ...Opt){ // 根据op原创 2022-03-28 16:37:32 · 1720 阅读 · 0 评论 -
【golang】time.Parse 统一时区
UTC:世界标准时间(英語:Coordinated Universal Time,法語:Temps Universel Coordonné,简称UTC)是最主要的世界時間標準CST :UTC+8时区名称,中国标准时间是其一,详见维基百科释义GMT:格林尼治平均时间(Greenwich Mean Time),前世界标准时示例: layout := "2006-01-02 15:04:05" now := time.Now().Format(layout) t1, _ := time.Parse(l原创 2022-03-22 21:58:06 · 2370 阅读 · 0 评论