本文主要介紹了golang 陣列隨機排序的實現,文中通過示例**介紹的非常詳細,具有一定的參考價值,感興趣的小夥伴們可以參考一下
前言
目前接到乙個推薦資料的需求,需要將資料庫中獲取到的資料進行隨機排序後返回給使用者。考慮了一下,有兩種使用方式,一種是通過資料庫 order by rand() ,還有一種就是本文需要使用到的**處理
具體實現步驟如下
1.引入庫
**如下:
import (2.組裝資料並排序(方案一)"fmt"
"math/rand"
"time"
)
**如下:
type categoryentity struct3.組裝資料並排序(方案二)func main()
data[1] = categoryentity
data[2] = categoryentity
data[3] = categoryentity
data[4] = categoryentity
data[5] = categoryentity
data[6] = categoryentity
data[7] = categoryentity
data[8] = categoryentity
data[9] = categoryentity
fmt.println("隨機前:", data)
//如果不使用rand.seed(seed int64),每次執行,得到的隨機數會一樣
rand.seed(time.now().unix())
//採用rand.shuffle,將切片隨機化處理後返回
rand.shuffle(len(data), func(i, j int) )
fmt.println("隨機後:", data)
}
**如下:
type categoryentity struct總結func main()
data[1] = categoryentity
data[2] = categoryentity
data[3] = categoryentity
data[4] = categoryentity
data[5] = categoryentity
data[6] = categoryentity
data[7] = categoryentity
data[8] = categoryentity
data[9] = categoryentity
fmt.println("隨機前:", data)
//如果不使用rand.seed(seed int64),每次執行,得到的隨機數會一樣
rand.seed(time.now().unix())
length := len(data)
for i := 0; i < length; i++
fmt.println("隨機後:", data)}
// 交換資料
func exchange(data categoryentity, i, j int)
整體比較簡單,但是需要注意的有兩點:
1:golang中 rand的使用方式,如果不使用rand.seed(seed int64),每次執行,得到的隨機數會一樣
2:方案一種採用rand.shuffle+匿名函式,將切片隨機化處理後返回。
3:方案二使用golang特有的陣列交換方式:
func exchange(data categoryentity, i, j int)到此這篇關於golang 陣列隨機排序的實現的文章就介紹到這了。
教你如何運用python golang實現迴圈鍊錶
這篇文章主要介紹了python golang如何實現迴圈鍊錶,幫助大家更好的理解和學習迴圈鍊錶的實現方法,感興趣的朋友可以了解下 迴圈鍊錶就是將單鏈表的末尾指向其頭部,形成乙個環。迴圈鍊錶的增刪操作和單鏈表的增刪操作區別不大。只是增加時,需要考慮空鍊錶增加第乙個節點的特殊情況 刪除時需考慮刪除節點是...
教你如何運用自聯接(不太明白)
sql有乙個技巧可以運用自聯接來把每一行與下一行對應。像上面這種查詢,你可以製造像秩 rank 或者位置 position 行差 row differences 累積總計 running total 等等的資料 it專家網獨家 如果不使用分析函式,怎麼樣能夠查詢累積和?例如 1 150 150 1 ...
golang 實現兩數之和
給定乙個整數陣列和乙個目標值,找出陣列中和為目標值的兩個數。你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。示例給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9 所以返回 0,1 golang 實現 package main impor...