我是靠谱客的博主 粗暴狗,最近开发中收集的这篇文章主要介绍GoFrame框架garray并发安全数组使用开箱体验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

今天在搞一个需求,从三方获得有信息变更的商品,更新自己的数据库,再推送给下游进行商品更新。

期间有更新商品数量不确定,为了保证程序稳定性,每组向下游推送20个商品id。

查了garray的文档,发现支持Chunk()方法,灰常好用。

func commonSendMessage(goodsIds *garray.IntArray, messageType int) {
   goodsIdsChunk := goodsIds.Chunk(20)
   for _, chunkedGoodsIds := range goodsIdsChunk {
      //给下游推送消息
      message.SendMessage(chunkedGoodsIds, messageType, 0) //商品变动appid为0
   }
}

于是,决定今天分享 GoFrame garray的开箱体验

普通数组

package main
import (
   "fmt"
   "github.com/gogf/gf/v2/container/garray"
)
func main() {
   // 创建并发安全的int类型数组
   a := garray.NewIntArray(true)
   // 添加数据项
   for i := 0; i < 10; i++ {
      a.Append(i)
   }
   // 获取当前数组长度
   fmt.Println(a.Len())
   // 获取当前数据项列表
   fmt.Println(a.Slice())
   // 获取指定索引项
   fmt.Println(a.Get(6))
   // 在指定索引后插入数据项
   a.InsertAfter(9, 11)
   // 在指定索引前插入数据项
   a.InsertBefore(10, 10)
   fmt.Println(a.Slice())
   // 修改指定索引的数据项
   a.Set(0, 100)
   fmt.Println(a.Slice())
   // 搜索数据项,返回搜索到的索引位置
   fmt.Println(a.Search(5))
   // 删除指定索引的数据项
   a.Remove(0)
   fmt.Println(a.Slice())
   // 并发安全,写锁操作
   a.LockFunc(func(array []int) {
      // 将末尾项改为100
      array[len(array)-1] = 100
   })
   // 并发安全,读锁操作
   a.RLockFunc(func(array []int) {
      fmt.Println(array[len(array)-1])
   })
   // 清空数组
   fmt.Println(a.Slice())
   a.Clear()
   fmt.Println(a.Slice())
}

输出结果如下:

下面介绍常用的方法

最后

以上就是粗暴狗为你收集整理的GoFrame框架garray并发安全数组使用开箱体验的全部内容,希望文章能够帮你解决GoFrame框架garray并发安全数组使用开箱体验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部