網站首頁 編程語言 正文
前言
今天在搞一個需求,從三方獲得有信息變更的商品,更新自己的數據庫,再推送給下游進行商品更新。
期間有更新商品數量不確定,為了保證程序穩定性,每組向下游推送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())
}
輸出結果如下:
下面介紹常用的方法 ??
Append
說明:向數組的尾部追加數據,可以添加任意數量字符串。Append
的方法是PushRight
的別名
格式:
Append(value ...string) *StrArray
示例:建立一個空數組,設置完數據后,并在數組尾部添加新的數據。
package main
import (
"fmt"
"github.com/gogf/gf/v2/container/garray"
"github.com/gogf/gf/v2/frame/g"
)
func main() {
s := garray.NewStrArray()
s.SetArray(g.SliceStr{"We", "are", "GF", "fans"})
s.Append("王", "中", "陽")
fmt.Println(s)
}
輸出結果:
At
說明:返回數組指定索引的數據
格式:
At(index int) (value string)
示例:建立一個數組,找到index
為2的數據。
func ExampleStrArray_At() {
s := garray.NewStrArrayFrom(g.SliceStr{"We", "are", "GF", "fans", "!"})
sAt := s.At(2)
fmt.Println(sAt)
}
輸出結果:GF
Chunk
說明:把指定數組按指定的大小Size
,分割成多個數組,返回值為[][]string
。最后一個數組包含數據的數量可能小于Size
格式:
Chunk(size int) [][]string
示例:建立一個數組,并將該數組分割成3個數組。
func ExampleStrArray_Chunk() {
s := garray.NewStrArrayFrom(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"})
r := s.Chunk(3)
fmt.Println(r)
}
輸出結果:[[a b c] [d e f] [g h]]
Clear
說明:刪除當前數組中所有的數據
格式:
Clear() *StrArray
示例:建立一個空數組,賦值后,并刪除該數組的數據。
func ExampleStrArray_Clear() {
s := garray.NewStrArray()
s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"})
fmt.Println(s)
fmt.Println(s.Clear())
fmt.Println(s)
}
輸出結果:
Clone
說明:克隆當前的數組。返回一個與當前數組相同的數組拷貝
格式:
Clone() (newArray *StrArray)
示例:建立一個空數組,賦值后,克隆出一個新數組。
func ExampleStrArray_Clone() {
s := garray.NewStrArray()
s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"})
r := s.Clone()
fmt.Println(r)
fmt.Println(s)
}
輸出結果:
PopLefts
說明:從數組的左側將多個字符串數據出棧,返回值為出棧的字符串數據,出棧數據的個數為size
。如果size
比數組的size
大,那么方法將返回數組中所有的數據。如果size<=0或者為空
,那么將返回nil
格式:
PopLefts(size int) []string
示例:建立1個新數組,將最左邊的2個數據做出棧操作,并打印出出棧的數據和原數組的剩余數據
func ExampleStrArray_PopLefts() {
s := garray.NewStrArray()
s.SetArray(g.SliceStr{"a", "b", "c", "d", "e", "f", "g", "h"})
r := s.PopLefts(2)
fmt.Println(r)
fmt.Println(s)
}
輸出結果:
總結
好了,garray的使用就先介紹到這里,是不是和PHP的array非常像,感覺框架的作者之前一定寫過PHP,哈哈。
原文鏈接:https://blog.csdn.net/w425772719/article/details/124822687
相關推薦
- 2023-05-07 numpy中數組的堆疊方法_python
- 2022-09-27 C#中對字符串進行壓縮和解壓的實現_C#教程
- 2023-07-07 Spring 管理事務的方式有幾種? Spring 事務中的隔離級別有哪幾種?
- 2022-07-17 SQL?Server中使用表變量和臨時表_MsSql
- 2023-07-03 利用ant-design下拉選擇框select的labelInValue屬性給下拉選項添加圖標
- 2022-12-11 c++將vector迭代器轉換為指針的實現方式_C 語言
- 2022-02-24 Promise.all() 函數的常用場景
- 2023-06-13 C語言函數多個返回值方式_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支