欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

GoFrame框架gset使用對比PHP?Java?Redis優(yōu)勢

 更新時間:2022年06月11日 11:45:07   作者:王中陽Go  
這篇文章主要為大家介紹了GoFrame框架gset對比PHP?Java?Redis的使用優(yōu)勢詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

這篇文章將會為大家介紹GoFrame gset使用入門,為了讓大家更好的理解,會簡明扼要的分析一下集合類型Set的特點,對比一下Java、PHP、原生Go對集合Set類型的支持情況,如果不支持Set類型,我們如何找到解決方案,來實現(xiàn)元素不可重復性和交差并補集的需求。

特點

集合gset:一組不可重復的元素,元素可以是任何類型

上一篇文章介紹的: GoFrame的garray為什么比PHP的array還好用? garray的排序數(shù)組也可以通過設置SetUnique(true),設置元素不可重復的特性。

使用入門

  • 支持設置并發(fā)安全的開關
  • 批量添加元素時,注意傳參:切片后要加上... 即把切片打散之后添加
  • Size() 獲得集合大小
  • Contains() 判斷是否包含指定值
  • Remove() 移除元素
  • 支持使用Iterator遍歷
  • 可以通過 集合.String() ,一鍵將集合轉成字符串
  • 通過 集合.LockFunc() 實現(xiàn)并發(fā)安全寫操作
  • 通過 集合.RLockFunc() 實現(xiàn)并發(fā)安全讀操作
  • Clear() 清空集合
package main
import (
   "fmt"
   "github.com/gogf/gf/container/gset"
)
func main() {
   //創(chuàng)建一個并發(fā)安全的集合對象
   s := gset.New(true)
   //添加數(shù)據(jù)
   s.Add(1)
   // 批量添加數(shù)據(jù)
   s.Add([]interface{}{2, 3, 4, 5}...) //注意 這里要用... 即把切片打散之后添加
   // 打印結果
   fmt.Println(s)
   fmt.Println("集合的大?。?, s.Size())
   fmt.Println("集合的大?。?, s.Size())
   fmt.Println("集合中是否包含某個值:", s.Contains(5))
   fmt.Println("集合中是否包含某個值:", s.Contains(10))
   fmt.Println("返回數(shù)據(jù)項:", s.Slice())
   s.Remove(1) //刪除的是數(shù)據(jù)項 不是根據(jù)索引刪除
   fmt.Println("remove刪除數(shù)據(jù)項之后:", s)
   // 遍歷
   s.Iterator(func(v interface{}) bool {
      fmt.Println("遍歷結果:", v)
      return true
   })
   // 集合轉字符串
   fmt.Println("集合轉字符串:", s.String())
   // 并發(fā)安全寫鎖操作
   s.LockFunc(func(m map[interface{}]struct{}) {
      m[6] = struct{}{}
   })
   // 并發(fā)安全讀鎖操作
   s.RLockFunc(func(m map[interface{}]struct{}) {
      fmt.Println("并發(fā)安全讀鎖操作:", m)
   })
   // 清空集合
   s.Clear()
   fmt.Println("清空集合后:", s)
}

打印結果

對比PHP和Java

PHP

PHP是沒有Set數(shù)據(jù)類型的,set關鍵字作為一個賦值函數(shù)使用。在PHP中,__set()方法可以用于為私有成員屬性設置值,給一個未定義的屬性賦值時會被觸發(fā);

使用Set一個非常重要的場景就是使用交差并補集;之前用PHP開發(fā)項目時,我們是使用Redis的Set來實現(xiàn)交差并補集需求的。

JAVA

在Java中,是有Set類型的:存取無序,元素唯一。

GO原生

Go原生也是不提供Set類型的,但是GoFrame為我們提供了gset類型。

GoFrame

我們可以基于gset實現(xiàn)不可重復元素的需求,當然,如果是Java轉Go的同學,使用gset應該會更加得心應手。

延伸

下圖是Go原生提供的數(shù)據(jù)類型,讓我們確信go原生并未支持set類型,但是支持Map類型。

而Map的key不能有重復值,當我們使用Go原生開發(fā)時,如果要實現(xiàn)不可重復元素的需求可以使用Map的這一特性。

Go原生開發(fā)要實現(xiàn)交差并補集,一樣可以像我們一樣,使用Redis的集合set,Redis還支持有序集合(sorted set)。

以上就是GoFrame框架gset使用對比PHP Java Redis優(yōu)勢的詳細內容,更多關于GoFrame框架gset優(yōu)勢的資料請關注腳本之家其它相關文章!

相關文章

  • 9個Golang中map常用示例分享

    9個Golang中map常用示例分享

    這篇文章主要和大家分享9個Golang中map可能是常用的使用案例,從1到9,越來越厲害。文中的示例代碼講解詳細,希望對大家學習Golang有一定的幫助
    2023-02-02
  • 詳解Go strconv包

    詳解Go strconv包

    Go語言中strconv包實現(xiàn)了基本數(shù)據(jù)類型和其字符串表示的相互轉換。這篇文章主要介紹了Go strconv包的相關知識,需要的朋友可以參考下
    2020-10-10
  • Golang如何自定義logrus日志保存為日志文件

    Golang如何自定義logrus日志保存為日志文件

    這篇文章主要給大家介紹了關于Golang如何自定義logrus日志保存為日志文件的相關資料,logrus是目前Github上star數(shù)量最多的日志庫,logrus功能強大,性能高效,而且具有高度靈活性,提供了自定義插件的功能,很多開源項目都是用了logrus來記錄其日志,需要的朋友可以參考下
    2024-02-02
  • 使用Go語言編寫一個極簡版的容器Container

    使用Go語言編寫一個極簡版的容器Container

    Docker作為一種流行的容器化技術,對于每一個程序開發(fā)者而言都具有重要性和必要性,因為容器化相關技術的普及大大簡化了開發(fā)環(huán)境配置、更好的隔離性和更高的安全性,對于部署項目和團隊協(xié)作而言也更加方便,本文將嘗試使用Go語言編寫一個極簡版的容器
    2023-10-10
  • 解決Golang 中使用WaitGroup的那點坑

    解決Golang 中使用WaitGroup的那點坑

    這篇文章主要介紹了解決Golang 中使用WaitGroup的那點坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go語言入門之函數(shù)的定義與使用

    Go語言入門之函數(shù)的定義與使用

    函數(shù)是一段代碼的片段,包含連續(xù)的執(zhí)行語句,它可以將零個或多個輸入?yún)?shù)映射到零個或多個參數(shù)輸出。本文將通過示例和大家詳細聊聊Go語言中函數(shù)的定義與使用,感興趣的可以了解一下
    2022-11-11
  • Golang 處理浮點數(shù)遇到的精度問題(使用decimal)

    Golang 處理浮點數(shù)遇到的精度問題(使用decimal)

    本文主要介紹了Golang 處理浮點數(shù)遇到的精度問題,不使用decimal會出大問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Go實現(xiàn)簡單的數(shù)據(jù)庫表轉結構體詳解

    Go實現(xiàn)簡單的數(shù)據(jù)庫表轉結構體詳解

    這篇文章主要為大家介紹了Go實現(xiàn)簡單的數(shù)據(jù)庫表轉結構體詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • golang 實現(xiàn)時間滑動窗口的示例代碼

    golang 實現(xiàn)時間滑動窗口的示例代碼

    滑動時間窗口就是把一段時間片分為多個樣本窗口,可以通過更細粒度對數(shù)據(jù)進行統(tǒng)計,這篇文章主要介紹了golang 實現(xiàn)時間滑動窗口,需要的朋友可以參考下
    2022-10-10
  • 詳解Golang編程中的常量與變量

    詳解Golang編程中的常量與變量

    這篇文章主要介紹了詳解Golang編程中的常量與變量,是Go語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-10-10

最新評論