add IsEmpty for gvar; add CompareVersion for gstr

This commit is contained in:
John
2019-07-27 15:36:52 +08:00
parent a157c3f940
commit 216a928861
3 changed files with 45 additions and 1 deletions

View File

@ -9,6 +9,7 @@ package gvar
import (
"encoding/json"
"github.com/gogf/gf/g/internal/empty"
"time"
"github.com/gogf/gf/g/container/gtype"
@ -70,6 +71,11 @@ func (v *Var) IsNil() bool {
return v.Val() == nil
}
// IsEmpty checks whether <v> is empty.
func (v *Var) IsEmpty() bool {
return empty.IsEmpty(v.Val())
}
// Bytes converts and returns <v> as []byte.
func (v *Var) Bytes() []byte {
return gconv.Bytes(v.Val())

View File

@ -599,3 +599,35 @@ func SearchArray(a []string, s string) int {
func InArray(a []string, s string) bool {
return SearchArray(a, s) != -1
}
// CompareVersion compares <a> and <b> as standard golang version.
// Golang standard version is as: 1.0.0, v1.0.1, v2.10.8, 10.2.0 etc.
func CompareVersion(a, b string) int {
if a[0] == 'v' {
a = a[1:]
}
if b[0] == 'v' {
b = b[1:]
}
array1 := strings.Split(a, ".")
array2 := strings.Split(b, ".")
for i := 0; i < len(array2) - len(array1); i++ {
array1 = append(array1, "")
}
for i := 0; i < len(array1) - len(array2); i++ {
array2 = append(array2, "")
}
v1 := 0
v2 := 0
for i := 0; i < len(array1); i++ {
v1 = gconv.Int(array1[i])
v2 = gconv.Int(array2[i])
if v1 > v2 {
return 1
}
if v1 < v2 {
return -1
}
}
return 0
}

View File

@ -1,5 +1,11 @@
package main
func main() {
import (
"fmt"
"github.com/gogf/gf/g"
)
func main() {
latestVersion := g.NewVar(nil, true)
fmt.Println(latestVersion.IsNil())
}