// Licensed to the Apache Software Foundation (ASF) under one// or more contributor license agreements. See the NOTICE file// distributed with this work for additional information// regarding copyright ownership. The ASF licenses this file// to you under the Apache License, Version 2.0 (the// "License"); you may not use this file except in compliance// with the License. You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.package scalarimport// Equals returns true if two scalars are equal, which means they have the same// datatype, validity and value.func (, Scalar) bool {if == {returntrue }if !arrow.TypeEqual(.DataType(), .DataType()) {returnfalse }if .IsValid() != .IsValid() {returnfalse }if !.IsValid() {returntrue }return .equals()}type equalOption struct { atol float64// absolute tolerance nansEq bool// whether NaNs are considered equal}// EqualOption is a functional option type used to configure how Records and Arrays are compared.typeEqualOptionfunc(*equalOption)// WithNaNsEqual configures the comparison functions so that NaNs are considered equal.func ( bool) EqualOption {returnfunc( *equalOption) { .nansEq = }}// WithAbsTolerance configures the comparison functions so that 2 floating point values// v1 and v2 are considered equal if |v1-v2| <= atol.func ( float64) EqualOption {returnfunc( *equalOption) { .atol = }}const defaultAbsoluteTolerance = 1e-5type approxEqualScalar interface { approxEquals(Scalar, equalOption) bool}func (, Scalar, ...EqualOption) bool { := equalOption{atol: defaultAbsoluteTolerance,nansEq: false, }for , := range { (&) }switch {case == :returntruecase !arrow.TypeEqual(.DataType(), .DataType()):returnfalsecase .IsValid() != .IsValid():returnfalsecase !.IsValid():returntrue }if , := .(approxEqualScalar); {return .approxEquals(, ) }return .equals()}
The pages are generated with Goldsv0.8.2. (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds.