kv.go

 1// Copyright The OpenTelemetry Authors
 2// SPDX-License-Identifier: Apache-2.0
 3
 4package attribute // import "go.opentelemetry.io/otel/attribute"
 5
 6import (
 7	"fmt"
 8)
 9
10// KeyValue holds a key and value pair.
11type KeyValue struct {
12	Key   Key
13	Value Value
14}
15
16// Valid returns if kv is a valid OpenTelemetry attribute.
17func (kv KeyValue) Valid() bool {
18	return kv.Key.Defined() && kv.Value.Type() != INVALID
19}
20
21// Bool creates a KeyValue with a BOOL Value type.
22func Bool(k string, v bool) KeyValue {
23	return Key(k).Bool(v)
24}
25
26// BoolSlice creates a KeyValue with a BOOLSLICE Value type.
27func BoolSlice(k string, v []bool) KeyValue {
28	return Key(k).BoolSlice(v)
29}
30
31// Int creates a KeyValue with an INT64 Value type.
32func Int(k string, v int) KeyValue {
33	return Key(k).Int(v)
34}
35
36// IntSlice creates a KeyValue with an INT64SLICE Value type.
37func IntSlice(k string, v []int) KeyValue {
38	return Key(k).IntSlice(v)
39}
40
41// Int64 creates a KeyValue with an INT64 Value type.
42func Int64(k string, v int64) KeyValue {
43	return Key(k).Int64(v)
44}
45
46// Int64Slice creates a KeyValue with an INT64SLICE Value type.
47func Int64Slice(k string, v []int64) KeyValue {
48	return Key(k).Int64Slice(v)
49}
50
51// Float64 creates a KeyValue with a FLOAT64 Value type.
52func Float64(k string, v float64) KeyValue {
53	return Key(k).Float64(v)
54}
55
56// Float64Slice creates a KeyValue with a FLOAT64SLICE Value type.
57func Float64Slice(k string, v []float64) KeyValue {
58	return Key(k).Float64Slice(v)
59}
60
61// String creates a KeyValue with a STRING Value type.
62func String(k, v string) KeyValue {
63	return Key(k).String(v)
64}
65
66// StringSlice creates a KeyValue with a STRINGSLICE Value type.
67func StringSlice(k string, v []string) KeyValue {
68	return Key(k).StringSlice(v)
69}
70
71// Stringer creates a new key-value pair with a passed name and a string
72// value generated by the passed Stringer interface.
73func Stringer(k string, v fmt.Stringer) KeyValue {
74	return Key(k).String(v.String())
75}