最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

這篇文章將會(huì)為大家介紹GoFrame gset使用入門,為了讓大家更好的理解,會(huì)簡明扼要的分析一下集合類型Set的特點(diǎn),對比一下Java、PHP、原生Go對集合Set類型的支持情況,如果不支持Set類型,我們?nèi)绾握业浇鉀Q方案,來實(shí)現(xiàn)元素不可重復(fù)性和交差并補(bǔ)集的需求。

特點(diǎn)

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

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

使用入門

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

打印結(jié)果

對比PHP和Java

PHP

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

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

JAVA

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

GO原生

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

GoFrame

我們可以基于gset實(shí)現(xiàn)不可重復(fù)元素的需求,當(dāng)然,如果是Java轉(zhuǎn)Go的同學(xué),使用gset應(yīng)該會(huì)更加得心應(yīng)手。

延伸

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

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

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

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

相關(guān)文章

  • Go語言包管理模式示例分析

    Go語言包管理模式示例分析

    這篇文章主要為大家介紹了Go語言包管理模式示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Go語言Cookie用法分析

    Go語言Cookie用法分析

    這篇文章主要介紹了Go語言Cookie用法,結(jié)合實(shí)例形式分析了Go語言Cookie的設(shè)置、讀取等相關(guān)操作技巧,需要的朋友可以參考下
    2017-02-02
  • Go語言實(shí)現(xiàn)讀取文件的方式總結(jié)

    Go語言實(shí)現(xiàn)讀取文件的方式總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Go語言實(shí)現(xiàn)讀取文件的幾個(gè)方式,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Go語言有一定的幫助,感興趣的小伙伴可以收藏一下
    2023-04-04
  • 解決Go中攔截HTTP流數(shù)據(jù)時(shí)字段丟失的問題

    解決Go中攔截HTTP流數(shù)據(jù)時(shí)字段丟失的問題

    在開發(fā)高并發(fā)的Web應(yīng)用時(shí),尤其是在處理HTTP代理和流數(shù)據(jù)攔截的場景下,遇到數(shù)據(jù)丟失的問題并不罕見,最近,在一個(gè)項(xiàng)目中,我遇到了一個(gè)棘手的問題:在攔截并轉(zhuǎn)發(fā)HTTP流數(shù)據(jù)的過程中,某些數(shù)據(jù)字段因?yàn)樘幚磉^快而被丟失,所以本文給大家介紹如何解決這個(gè)問題
    2024-08-08
  • Golang比較兩個(gè)slice是否相等的問題

    Golang比較兩個(gè)slice是否相等的問題

    本文主要介紹了Golang比較兩個(gè)slice是否相等的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Go語言使用sync.Mutex實(shí)現(xiàn)資源加鎖

    Go語言使用sync.Mutex實(shí)現(xiàn)資源加鎖

    數(shù)據(jù)共享是一把雙刃劍,Go語言為我們提供了?sync.Mutex,一種最基礎(chǔ)也是最常用的加鎖方式,用于保證在任意時(shí)刻只有一個(gè) goroutine 能訪問共享資源,下面我們就來看看具體實(shí)現(xiàn)吧
    2025-08-08
  • go?generate代碼自動(dòng)生成指南

    go?generate代碼自動(dòng)生成指南

    這篇文章主要介紹了go?generate代碼自動(dòng)生成指南,本文將探討?go?generate?命令的使用方法、原理以及一些實(shí)際應(yīng)用場景,希望讀者能夠更好地理解和運(yùn)用這個(gè)強(qiáng)大的工具
    2024-01-01
  • Golang map實(shí)現(xiàn)原理深入分析

    Golang map實(shí)現(xiàn)原理深入分析

    map是一種無序的基于key-value的數(shù)據(jù)結(jié)構(gòu),Go語言中的map是引用類型,必須初始化才能使用,下面這篇文章主要給大家介紹了關(guān)于golang中map使用的幾點(diǎn)注意事項(xiàng),需要的朋友可以參考下
    2023-01-01
  • Go語言--切片(Slice)詳解

    Go語言--切片(Slice)詳解

    這篇文章主要介紹了Go語言--切片(Slice),Go 語言切片是對數(shù)組的抽象,下面文章小編將為大家詳細(xì)介紹該內(nèi)容,需要的朋友可以參考下,希望對你有所幫助
    2021-10-10
  • golang1.21泛型函數(shù)全面講解

    golang1.21泛型函數(shù)全面講解

    在Go編程語言中,泛型一直是一個(gè)備受期待的特性,隨著Go?1.21的發(fā)布,本文旨在提供Go?1.21中泛型的詳細(xì)探索,闡明它們的優(yōu)點(diǎn)、語法、實(shí)現(xiàn)和最佳實(shí)踐,希望對大家有所幫助
    2023-09-09

最新評論

云阳县| 寿光市| 江阴市| 内丘县| 九龙坡区| 福安市| 礼泉县| 同德县| 抚州市| 珠海市| 滕州市| 济阳县| 诏安县| 云阳县| 揭东县| 兴和县| 黔南| 峡江县| 汤阴县| 富民县| 怀来县| 温泉县| 河曲县| 蒙自县| 长岛县| 河间市| 乌审旗| 麻栗坡县| 柘城县| 应城市| 随州市| 泽州县| 米易县| 靖江市| 饶河县| 灌南县| 大兴区| 城口县| 潍坊市| 元氏县| 珲春市|