attr.go

 1// Copyright The OpenTelemetry Authors
 2// SPDX-License-Identifier: Apache-2.0
 3
 4package telemetry
 5
 6// Attr is a key-value pair.
 7type Attr struct {
 8	Key   string `json:"key,omitempty"`
 9	Value Value  `json:"value,omitempty"`
10}
11
12// String returns an Attr for a string value.
13func String(key, value string) Attr {
14	return Attr{key, StringValue(value)}
15}
16
17// Int64 returns an Attr for an int64 value.
18func Int64(key string, value int64) Attr {
19	return Attr{key, Int64Value(value)}
20}
21
22// Int returns an Attr for an int value.
23func Int(key string, value int) Attr {
24	return Int64(key, int64(value))
25}
26
27// Float64 returns an Attr for a float64 value.
28func Float64(key string, value float64) Attr {
29	return Attr{key, Float64Value(value)}
30}
31
32// Bool returns an Attr for a bool value.
33func Bool(key string, value bool) Attr {
34	return Attr{key, BoolValue(value)}
35}
36
37// Bytes returns an Attr for a []byte value.
38// The passed slice must not be changed after it is passed.
39func Bytes(key string, value []byte) Attr {
40	return Attr{key, BytesValue(value)}
41}
42
43// Slice returns an Attr for a []Value value.
44// The passed slice must not be changed after it is passed.
45func Slice(key string, value ...Value) Attr {
46	return Attr{key, SliceValue(value...)}
47}
48
49// Map returns an Attr for a map value.
50// The passed slice must not be changed after it is passed.
51func Map(key string, value ...Attr) Attr {
52	return Attr{key, MapValue(value...)}
53}
54
55// Equal returns if a is equal to b.
56func (a Attr) Equal(b Attr) bool {
57	return a.Key == b.Key && a.Value.Equal(b.Value)
58}