From 216a928861bbcd42c624ac907f59deadc278bbc1 Mon Sep 17 00:00:00 2001 From: John Date: Sat, 27 Jul 2019 15:36:52 +0800 Subject: [PATCH] add IsEmpty for gvar; add CompareVersion for gstr --- g/container/gvar/gvar.go | 6 ++++++ g/text/gstr/gstr.go | 32 ++++++++++++++++++++++++++++++++ geg/other/test.go | 8 +++++++- 3 files changed, 45 insertions(+), 1 deletion(-) diff --git a/g/container/gvar/gvar.go b/g/container/gvar/gvar.go index 7cb88bdaa..1b2dfac9d 100644 --- a/g/container/gvar/gvar.go +++ b/g/container/gvar/gvar.go @@ -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 is empty. +func (v *Var) IsEmpty() bool { + return empty.IsEmpty(v.Val()) +} + // Bytes converts and returns as []byte. func (v *Var) Bytes() []byte { return gconv.Bytes(v.Val()) diff --git a/g/text/gstr/gstr.go b/g/text/gstr/gstr.go index 7098bc2b8..57237e4bd 100644 --- a/g/text/gstr/gstr.go +++ b/g/text/gstr/gstr.go @@ -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 and 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 +} diff --git a/geg/other/test.go b/geg/other/test.go index 790580777..9c8e95194 100644 --- a/geg/other/test.go +++ b/geg/other/test.go @@ -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()) }