Added methods to manipulate ints.
- Conversions and basic math.
This commit is contained in:
parent
1f581dfb43
commit
3d416ec281
167
ints.go
Normal file
167
ints.go
Normal file
@ -0,0 +1,167 @@
|
||||
package geom
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// AbsInt returns the absolute value of i.
|
||||
func AbsInt(i int) int {
|
||||
if 0 > i {
|
||||
return -i
|
||||
}
|
||||
return i
|
||||
}
|
||||
|
||||
// Itoa returns i as a string.
|
||||
func Itoa(i int) string {
|
||||
return strconv.Itoa(i)
|
||||
}
|
||||
|
||||
// Itoa64 returns i as string.
|
||||
func Itoa64(i int64) string {
|
||||
return strconv.FormatInt(i, 10)
|
||||
}
|
||||
|
||||
// FmtInts formats the integer slice as a string each item separated by sep.
|
||||
func FmtInts(ints []int, sep string) string {
|
||||
var out bytes.Buffer
|
||||
for i, val := range ints {
|
||||
if i > 0 {
|
||||
out.WriteString(sep)
|
||||
}
|
||||
out.WriteString(Itoa(val))
|
||||
}
|
||||
return out.String()
|
||||
}
|
||||
|
||||
// FmtInts64 formats the integer slice as a string each item separated by sep.
|
||||
func FmtInts64(ints []int64, sep string) string {
|
||||
var out bytes.Buffer
|
||||
for i, val := range ints {
|
||||
if i > 0 {
|
||||
out.WriteString(sep)
|
||||
}
|
||||
out.WriteString(Itoa64(val))
|
||||
}
|
||||
return out.String()
|
||||
}
|
||||
|
||||
// MinInt returns the minimum of a and b.
|
||||
func MinInt(a, b int) int {
|
||||
if a < b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
// MinInt64 returns the minimum of a and b.
|
||||
func MinInt64(a, b int64) int64 {
|
||||
if a < b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
// MaxInt returns the maximum of a and b.
|
||||
func MaxInt(a, b int) int {
|
||||
if a > b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
// MaxInt64 returns the maximum of a and b.
|
||||
func MaxInt64(a, b int64) int64 {
|
||||
if a > b {
|
||||
return a
|
||||
}
|
||||
return b
|
||||
}
|
||||
|
||||
// MustAtoi parses string s as an integer. Method panics if the conversion fails.
|
||||
func MustAtoi(s string) int {
|
||||
var i, err = strconv.Atoi(s)
|
||||
if nil != err {
|
||||
panic("error converting string to int")
|
||||
}
|
||||
return i
|
||||
}
|
||||
|
||||
// MustAtoi64 parses string s as an integer. Method panics if the conversion fails.
|
||||
func MustAtoi64(s string) int64 {
|
||||
var i, err = strconv.ParseInt(s, 10, 64)
|
||||
if nil != err {
|
||||
panic("error converting string to int")
|
||||
}
|
||||
return i
|
||||
}
|
||||
|
||||
// MustAstois parses the strings as integers. Method panics if one of the conversion fails.
|
||||
func MustAstois(s ...string) []int {
|
||||
var res = make([]int, len(s))
|
||||
for i := range s {
|
||||
res[i] = MustAtoi(s[i])
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
// MustAstois64 parses the strings as integers. Method panics if one of the conversion fails.
|
||||
func MustAstois64(s ...string) []int64 {
|
||||
var res = make([]int64, len(s))
|
||||
for i := range s {
|
||||
res[i] = MustAtoi64(s[i])
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
// NormInt returns the normalized value of i (-1, 0 or 1).
|
||||
func NormInt(i int) int {
|
||||
if i < 0 {
|
||||
return -1
|
||||
}
|
||||
if i > 0 {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// NormInt64 returns the normalized value of i (-1, 0 or 1).
|
||||
func NormInt64(i int64) int64 {
|
||||
if i < 0 {
|
||||
return -1
|
||||
}
|
||||
if i > 0 {
|
||||
return 1
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
// SplitInts splits the string s by separator sep, converts every part to an integer and returns all the integers as a slice. Method panics if one of the conversion fails.
|
||||
func SplitInts(s, sep string) []int {
|
||||
var numbers = strings.Split(s, sep)
|
||||
var ints = make([]int, len(numbers))
|
||||
for i, n := range numbers {
|
||||
ints[i] = MustAtoi(n)
|
||||
}
|
||||
return ints
|
||||
}
|
||||
|
||||
// SplitInts64 splits the string s by separator sep, converts every part to an integer and returns all the integers as a slice. Method panics if one of the conversion fails.
|
||||
func SplitInts64(s, sep string) []int64 {
|
||||
var numbers = strings.Split(s, sep)
|
||||
var ints = make([]int64, len(numbers))
|
||||
for i, n := range numbers {
|
||||
ints[i] = MustAtoi64(n)
|
||||
}
|
||||
return ints
|
||||
}
|
||||
|
||||
// SubAbsInt subtracts a from b and returns the absolute value of the result.
|
||||
func SubAbsInt(a, b int) int {
|
||||
if a > b {
|
||||
return a - b
|
||||
}
|
||||
return b - a
|
||||
}
|
Loading…
Reference in New Issue
Block a user