comparer

package
v0.0.0-...-e50112c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 22, 2024 License: BSD-3-Clause Imports: 5 Imported by: 0

README

比较方法

  • 弱类型比较。
    • 比较一个整数和一个字符串是否相等
    • 比较一个 interface 是否大于一个字符串
  • 在比较两个对象时,会尝试将他们统一转化为同一种可以比较的类型。
    • 举例:在比较两个字符串时,如果发现两个字符串都能转化为数字,则按照数字比较逻辑比较,因此 "321" > "99" 会返回 true 而不是 false(按字符串比较时,会因为首字母 '3'<'9' 而返回 false)。

Documentation

Overview

------------------------------------------------------------------------------ 用于比较两个对象的函数集。 Golang 不是弱类型语言、不是解释型语言。但弱类型语言、解释型语言也有他们的优点,比如能判断出 1 == "1" 等类型不同、但实际含义相同的表达式。 同时,解释型语言可以很方便的在运行时判断两个变量是否相等,比如: let a = 1; let b = "1"; if evel("$a == $b") { ... } 这样的特性很灵活、有时候会很高效。 此函数集实现类似的功能,可以通过 Compare(a, b interface{}, opr string, option int) 来比较两个对象。函数内部判断他们可能的类型,尝试将他们类型统一后再进行操作符运算。

该函数的使用场景,参见 jsonValidator 类库。 ------------------------------------------------------------------------------

Index

Constants

View Source
const (
	Option_None            = iota
	Option_CaseSensitive   = 1
	Option_CaseInsensitive = 2
)

Variables

This section is empty.

Functions

func Compare

func Compare(a, b interface{}, opr Operator, options ...int) (bool, error)

func CompareBool

func CompareBool(a, b bool, opr Operator) (bool, error)

比较两个 bool 变量。 opr 指定比较操作符, eq|ueq

func CompareFloat

func CompareFloat(a, b float64, opr Operator) (ok bool, err error)

比较两个 float 变量。 opr 指定比较操作符, eq|ueq|gt|egt|lt|elt

func CompareInt

func CompareInt(a, b int64, opr Operator) (bool, error)

比较两个 int 变量。 opr 指定比较操作符, eq|ueq|gt|egt|lt|elt

func CompareNil

func CompareNil(a interface{}, opr Operator) (bool, error)

func CompareString

func CompareString(a, b string, opr Operator, options ...int) (ok bool, err error)

比较两个 string 变量。 opr 指定比较操作符, eq|ueq|gt|egt|lt|elt

func CompareUint

func CompareUint(a, b uint64, opr Operator) (ok bool, err error)

比较两个 uint 变量。 opr 指定比较操作符, eq|ueq|gt|egt|lt|elt

Types

type Operator

type Operator string
const (
	Operator_Exist       Operator = "exist"
	Operator_Eq          Operator = "eq"
	Operator_Ueq         Operator = "ueq"
	Operator_Gt          Operator = "gt"
	Operator_Egt         Operator = "egt"
	Operator_Lt          Operator = "lt"
	Operator_Elt         Operator = "elt"
	Operator_Like        Operator = "like"
	Operator_NotLike     Operator = "not-like"
	Operator_Regex       Operator = "regex"
	Operator_Contains    Operator = "contains"
	Operator_NotContains Operator = "not-contains"
	Operator_In          Operator = "in"
	Operator_NotIn       Operator = "not-in"
	Operator_Empty       Operator = "empty"
	Operator_NotEmpty    Operator = "not-empty"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL