You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-12-03 23:21:27 +02:00
Resolve #6525 ## Description This pull request addresses the issue of moving internal functionality from the `internal/attribute` package to the `attribute `package within the open-telemetry/opentelemetry-go repository. The goal is to ensure that none of this functionality is added to the public API of the attribute or any other public package while improving the naming, layout, and following Go idioms. ## Changes made 1. Moved Functions to `attribute/internal` - Created a new internal package within the `attribute` package: `attribute/internal`. - Moved `attribute.go` and `attribute_test.go` into the `attribute/internal` - Moved the following functions from `internal/attribute` to `attribute/internal` 2 . Changes in .golangci.yml - Removed line 67 and 68 from .golangci.yml --------- Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
97 lines
2.7 KiB
Go
97 lines
2.7 KiB
Go
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
/*
|
|
Package attribute provide several helper functions for some commonly used
|
|
logic of processing attributes.
|
|
*/
|
|
package attribute // import "go.opentelemetry.io/otel/attribute/internal"
|
|
|
|
import (
|
|
"reflect"
|
|
)
|
|
|
|
// BoolSliceValue converts a bool slice into an array with same elements as slice.
|
|
func BoolSliceValue(v []bool) interface{} {
|
|
var zero bool
|
|
cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
|
|
reflect.Copy(cp, reflect.ValueOf(v))
|
|
return cp.Interface()
|
|
}
|
|
|
|
// Int64SliceValue converts an int64 slice into an array with same elements as slice.
|
|
func Int64SliceValue(v []int64) interface{} {
|
|
var zero int64
|
|
cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
|
|
reflect.Copy(cp, reflect.ValueOf(v))
|
|
return cp.Interface()
|
|
}
|
|
|
|
// Float64SliceValue converts a float64 slice into an array with same elements as slice.
|
|
func Float64SliceValue(v []float64) interface{} {
|
|
var zero float64
|
|
cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
|
|
reflect.Copy(cp, reflect.ValueOf(v))
|
|
return cp.Interface()
|
|
}
|
|
|
|
// StringSliceValue converts a string slice into an array with same elements as slice.
|
|
func StringSliceValue(v []string) interface{} {
|
|
var zero string
|
|
cp := reflect.New(reflect.ArrayOf(len(v), reflect.TypeOf(zero))).Elem()
|
|
reflect.Copy(cp, reflect.ValueOf(v))
|
|
return cp.Interface()
|
|
}
|
|
|
|
// AsBoolSlice converts a bool array into a slice into with same elements as array.
|
|
func AsBoolSlice(v interface{}) []bool {
|
|
rv := reflect.ValueOf(v)
|
|
if rv.Type().Kind() != reflect.Array {
|
|
return nil
|
|
}
|
|
cpy := make([]bool, rv.Len())
|
|
if len(cpy) > 0 {
|
|
_ = reflect.Copy(reflect.ValueOf(cpy), rv)
|
|
}
|
|
return cpy
|
|
}
|
|
|
|
// AsInt64Slice converts an int64 array into a slice into with same elements as array.
|
|
func AsInt64Slice(v interface{}) []int64 {
|
|
rv := reflect.ValueOf(v)
|
|
if rv.Type().Kind() != reflect.Array {
|
|
return nil
|
|
}
|
|
cpy := make([]int64, rv.Len())
|
|
if len(cpy) > 0 {
|
|
_ = reflect.Copy(reflect.ValueOf(cpy), rv)
|
|
}
|
|
return cpy
|
|
}
|
|
|
|
// AsFloat64Slice converts a float64 array into a slice into with same elements as array.
|
|
func AsFloat64Slice(v interface{}) []float64 {
|
|
rv := reflect.ValueOf(v)
|
|
if rv.Type().Kind() != reflect.Array {
|
|
return nil
|
|
}
|
|
cpy := make([]float64, rv.Len())
|
|
if len(cpy) > 0 {
|
|
_ = reflect.Copy(reflect.ValueOf(cpy), rv)
|
|
}
|
|
return cpy
|
|
}
|
|
|
|
// AsStringSlice converts a string array into a slice into with same elements as array.
|
|
func AsStringSlice(v interface{}) []string {
|
|
rv := reflect.ValueOf(v)
|
|
if rv.Type().Kind() != reflect.Array {
|
|
return nil
|
|
}
|
|
cpy := make([]string, rv.Len())
|
|
if len(cpy) > 0 {
|
|
_ = reflect.Copy(reflect.ValueOf(cpy), rv)
|
|
}
|
|
return cpy
|
|
}
|