Skip to content

Instantly share code, notes, and snippets.

@techslides
Last active January 4, 2023 05:34
Show Gist options
  • Save techslides/fe69dbdffdf6a42e1771 to your computer and use it in GitHub Desktop.
Save techslides/fe69dbdffdf6a42e1771 to your computer and use it in GitHub Desktop.
Shuffle Array of Objects with Go Lang
package hello
import (
"net/http"
"github.com/go-martini/martini"
"github.com/martini-contrib/cors"
"github.com/martini-contrib/render"
"math/rand"
)
type Resources struct {
Name string `json:"name"`
URI string `json:"uri"`
Methods string `json:"methods"`
}
type Card struct {
Suit string `json:"suit"`
Number int `json:"number"`
}
//deck
var cards = []Card{{Suit: "Spades", Number: 2},{Suit: "Spades", Number: 3},{Suit: "Spades", Number: 4},{Suit: "Spades", Number: 5},{Suit: "Spades", Number: 6},{Suit: "Spades", Number: 7},{Suit: "Spades", Number: 8},{Suit: "Spades", Number: 9},{Suit: "Spades", Number: 10},{Suit: "Spades", Number: 11},{Suit: "Spades", Number: 12},{Suit: "Spades", Number: 13},{Suit: "Spades", Number: 14},{Suit: "Hearts", Number: 2},{Suit: "Hearts", Number: 3},{Suit: "Hearts", Number: 4},{Suit: "Hearts", Number: 5},{Suit: "Hearts", Number: 6},{Suit: "Hearts", Number: 7},{Suit: "Hearts", Number: 8},{Suit: "Hearts", Number: 9},{Suit: "Hearts", Number: 10},{Suit: "Hearts", Number: 11},{Suit: "Hearts", Number: 12},{Suit: "Hearts", Number: 13},{Suit: "Hearts", Number: 14},{Suit: "Diamonds", Number: 2},{Suit: "Diamonds", Number: 3},{Suit: "Diamonds", Number: 4},{Suit: "Diamonds", Number: 5},{Suit: "Diamonds", Number: 6},{Suit: "Diamonds", Number: 7},{Suit: "Diamonds", Number: 8},{Suit: "Diamonds", Number: 9},{Suit: "Diamonds", Number: 10},{Suit: "Diamonds", Number: 11},{Suit: "Diamonds", Number: 12},{Suit: "Diamonds", Number: 13},{Suit: "Diamonds", Number: 14},{Suit: "Clubs", Number: 2},{Suit: "Clubs", Number: 3},{Suit: "Clubs", Number: 4},{Suit: "Clubs", Number: 5},{Suit: "Clubs", Number: 6},{Suit: "Clubs", Number: 7},{Suit: "Clubs", Number: 8},{Suit: "Clubs", Number: 9},{Suit: "Clubs", Number: 10},{Suit: "Clubs", Number: 11},{Suit: "Clubs", Number: 12},{Suit: "Clubs", Number: 13},{Suit: "Clubs", Number: 14}}
//shuffle
func Shuffle(slc []Card) {
for i := 1; i < len(slc); i++ {
r := rand.Intn(i + 1)
if i != r {
slc[r], slc[i] = slc[i], slc[r]
}
}
}
func init() {
m := martini.Classic()
allowCORSHandler := cors.Allow(&cors.Options{
AllowOrigins: []string{"*"},
AllowMethods: []string{"GET", "POST"},
AllowHeaders: []string{"Origin"},
})
m.Use(render.Renderer(render.Options{
IndentJSON: true, // Output human readable JSON
}))
m.Get("/", allowCORSHandler, func(r render.Render) {
Shuffle(cards)
json := []Resources{{Name: "cards", URI: "/cards/{players}", Methods: "GET"}}
r.JSON(200, json)
})
m.Get("/cards", allowCORSHandler, func(r render.Render) {
Shuffle(cards)
r.JSON(200, cards)
})
http.Handle("/", m)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment