init
This commit is contained in:
85
impl/int64Array.go
Normal file
85
impl/int64Array.go
Normal file
@ -0,0 +1,85 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type Int64Array []int64
|
||||
|
||||
func (v *Int64Array) Scan(value interface{}) error {
|
||||
//判断类型
|
||||
switch data := value.(type) {
|
||||
case []byte:
|
||||
return json.Unmarshal(data, v)
|
||||
case string:
|
||||
return json.Unmarshal([]byte(data), v)
|
||||
case nil:
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(value.([]byte), v)
|
||||
}
|
||||
|
||||
func (v Int64Array) Value() (driver.Value, error) {
|
||||
return json.Marshal(v)
|
||||
}
|
||||
|
||||
func (v Int64Array) RemoveDuplicates() Int64Array {
|
||||
newArr := make([]int64, 0)
|
||||
for i := 0; i < len(v); i++ {
|
||||
repeat := false
|
||||
for j := i + 1; j < len(v); j++ {
|
||||
if v[i] == v[j] {
|
||||
repeat = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !repeat {
|
||||
newArr = append(newArr, v[i])
|
||||
}
|
||||
}
|
||||
return newArr
|
||||
}
|
||||
func (v Int64Array) RemoveEmpty() Int64Array {
|
||||
return v.RemoveValue(0)
|
||||
}
|
||||
|
||||
func (v Int64Array) RemoveValue(value int64) Int64Array {
|
||||
newArr := make([]int64, 0)
|
||||
for i := 0; i < len(v); i++ {
|
||||
if v[i] != value {
|
||||
newArr = append(newArr, v[i])
|
||||
}
|
||||
}
|
||||
return newArr
|
||||
}
|
||||
|
||||
func (v Int64Array) Contains(id int64) bool {
|
||||
for _, i := range v {
|
||||
if i == id {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (v Int64Array) Eq(arr []int64) bool {
|
||||
if len(v) != len(arr) {
|
||||
return false
|
||||
}
|
||||
for _, i := range arr {
|
||||
//只要有一个不包含就是不一样的
|
||||
if v.Contains(i) == false {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (v Int64Array) ToIntSlice() []int {
|
||||
out := make([]int, 0)
|
||||
for _, i := range v {
|
||||
out = append(out, int(i))
|
||||
}
|
||||
return out
|
||||
}
|
86
impl/intArray.go
Normal file
86
impl/intArray.go
Normal file
@ -0,0 +1,86 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type IntArray []int
|
||||
|
||||
func (v *IntArray) Scan(value interface{}) error {
|
||||
//判断类型
|
||||
switch data := value.(type) {
|
||||
case []byte:
|
||||
return json.Unmarshal(data, v)
|
||||
case string:
|
||||
return json.Unmarshal([]byte(data), v)
|
||||
case nil:
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(value.([]byte), v)
|
||||
}
|
||||
|
||||
func (v IntArray) Value() (driver.Value, error) {
|
||||
return json.Marshal(v)
|
||||
}
|
||||
|
||||
func (v IntArray) RemoveDuplicates() IntArray {
|
||||
newArr := make([]int, 0)
|
||||
for i := 0; i < len(v); i++ {
|
||||
repeat := false
|
||||
for j := i + 1; j < len(v); j++ {
|
||||
if v[i] == v[j] {
|
||||
repeat = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !repeat {
|
||||
newArr = append(newArr, v[i])
|
||||
}
|
||||
}
|
||||
return newArr
|
||||
}
|
||||
|
||||
func (v IntArray) RemoveEmpty() IntArray {
|
||||
return v.RemoveValue(0)
|
||||
}
|
||||
|
||||
func (v IntArray) RemoveValue(value int) IntArray {
|
||||
newArr := make([]int, 0)
|
||||
for i := 0; i < len(v); i++ {
|
||||
if v[i] != value {
|
||||
newArr = append(newArr, v[i])
|
||||
}
|
||||
}
|
||||
return newArr
|
||||
}
|
||||
|
||||
func (v IntArray) Contains(id int) bool {
|
||||
for _, i := range v {
|
||||
if i == id {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (v IntArray) Eq(arr []int) bool {
|
||||
if len(v) != len(arr) {
|
||||
return false
|
||||
}
|
||||
for _, i := range arr {
|
||||
//只要有一个不包含就是不一样的
|
||||
if v.Contains(i) == false {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (v IntArray) ToIntSlice() []int {
|
||||
out := make([]int, 0)
|
||||
for _, i := range v {
|
||||
out = append(out, int(i))
|
||||
}
|
||||
return out
|
||||
}
|
87
impl/stringArray.go
Normal file
87
impl/stringArray.go
Normal file
@ -0,0 +1,87 @@
|
||||
package impl
|
||||
|
||||
import (
|
||||
"database/sql/driver"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type StringArray []string
|
||||
|
||||
func (v *StringArray) Scan(value interface{}) error {
|
||||
//判断类型
|
||||
switch data := value.(type) {
|
||||
case []byte:
|
||||
return json.Unmarshal(data, v)
|
||||
case string:
|
||||
return json.Unmarshal([]byte(data), v)
|
||||
case nil:
|
||||
return nil
|
||||
}
|
||||
return json.Unmarshal(value.([]byte), v)
|
||||
}
|
||||
|
||||
func (v StringArray) Value() (driver.Value, error) {
|
||||
return json.Marshal(v)
|
||||
}
|
||||
|
||||
func (v StringArray) RemoveDuplicates() StringArray {
|
||||
newArr := make([]string, 0)
|
||||
for i := 0; i < len(v); i++ {
|
||||
repeat := false
|
||||
for j := i + 1; j < len(v); j++ {
|
||||
if v[i] == v[j] {
|
||||
repeat = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !repeat {
|
||||
newArr = append(newArr, v[i])
|
||||
}
|
||||
}
|
||||
return newArr
|
||||
}
|
||||
|
||||
func (v StringArray) RemoveEmpty() StringArray {
|
||||
return v.RemoveValue("")
|
||||
}
|
||||
|
||||
func (v StringArray) RemoveValue(value string) StringArray {
|
||||
newArr := make([]string, 0)
|
||||
for i := 0; i < len(v); i++ {
|
||||
if !strings.EqualFold(v[i], value) {
|
||||
newArr = append(newArr, v[i])
|
||||
}
|
||||
}
|
||||
return newArr
|
||||
}
|
||||
|
||||
func (v StringArray) Contains(str string) bool {
|
||||
for _, i := range v {
|
||||
if i == str {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (v StringArray) Eq(strArr []string) bool {
|
||||
if len(v) != len(strArr) {
|
||||
return false
|
||||
}
|
||||
for _, i := range strArr {
|
||||
//只要有一个不包含就是不一样的
|
||||
if v.Contains(i) == false {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (v StringArray) ToStringSlice() []string {
|
||||
out := make([]string, 0)
|
||||
for _, i := range v {
|
||||
out = append(out, i)
|
||||
}
|
||||
return out
|
||||
}
|
Reference in New Issue
Block a user