Files
obitools4/pkg/goutils/goutils.go

55 lines
1.1 KiB
Go
Raw Normal View History

2022-01-13 23:27:39 +01:00
package goutils
import (
"bytes"
"encoding/gob"
)
type NotAnInteger struct {
message string
}
func (m *NotAnInteger) Error() string {
return m.message
}
func InterfaceToInt(i interface{}) (val int, err error) {
err = nil
val = 0
switch t := i.(type) {
case int:
val = t
case int8:
val = int(t) // standardizes across systems
case int16:
val = int(t) // standardizes across systems
case int32:
val = int(t) // standardizes across systems
case int64:
val = int(t) // standardizes across systems
case float32:
val = int(t) // standardizes across systems
case float64:
val = int(t) // standardizes across systems
case uint8:
val = int(t) // standardizes across systems
case uint16:
val = int(t) // standardizes across systems
case uint32:
val = int(t) // standardizes across systems
case uint64:
val = int(t) // standardizes across systems
default:
err = &NotAnInteger{"count attribute is not an integer"}
}
return
}
func CopyMap(dest, src map[string]interface{}) {
buf := new(bytes.Buffer)
gob.NewEncoder(buf).Encode(src)
gob.NewDecoder(buf).Decode(&dest)
}