Skip to content

Commit 94ec556

Browse files
sam-kevmihailenco
authored andcommitted
Add Float32 helper
1 parent 2f1ad94 commit 94ec556

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

command.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,25 @@ func (cmd *Cmd) Uint64() (uint64, error) {
218218
}
219219
}
220220

221+
func (cmd *Cmd) Float32() (float32, error) {
222+
if cmd.err != nil {
223+
return 0, cmd.err
224+
}
225+
switch val := cmd.val.(type) {
226+
case int64:
227+
return float32(val), nil
228+
case string:
229+
f, err := strconv.ParseFloat(val, 32)
230+
if err != nil {
231+
return 0, err
232+
}
233+
return float32(f), nil
234+
default:
235+
err := fmt.Errorf("redis: unexpected type=%T for Float32", val)
236+
return 0, err
237+
}
238+
}
239+
221240
func (cmd *Cmd) Float64() (float64, error) {
222241
if cmd.err != nil {
223242
return 0, cmd.err
@@ -585,6 +604,17 @@ func (cmd *StringCmd) Uint64() (uint64, error) {
585604
return strconv.ParseUint(cmd.Val(), 10, 64)
586605
}
587606

607+
func (cmd *StringCmd) Float32() (float32, error) {
608+
if cmd.err != nil {
609+
return 0, cmd.err
610+
}
611+
f, err := strconv.ParseFloat(cmd.Val(), 32)
612+
if err != nil {
613+
return 0, err
614+
}
615+
return float32(f), nil
616+
}
617+
588618
func (cmd *StringCmd) Float64() (float64, error) {
589619
if cmd.err != nil {
590620
return 0, cmd.err

command_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,14 @@ var _ = Describe("Cmd", func() {
5757
Expect(f).To(Equal(float64(10)))
5858
})
5959

60+
It("supports float32", func() {
61+
f := float32(66.97)
62+
63+
err := client.Set("float_key", f, 0).Err()
64+
Expect(err).NotTo(HaveOccurred())
65+
66+
val, err := client.Get("float_key").Float32()
67+
Expect(err).NotTo(HaveOccurred())
68+
Expect(val).To(Equal(f))
69+
})
6070
})

0 commit comments

Comments
 (0)