key.go

  1// Copyright The OpenTelemetry Authors
  2// SPDX-License-Identifier: Apache-2.0
  3
  4package attribute // import "go.opentelemetry.io/otel/attribute"
  5
  6// Key represents the key part in key-value pairs. It's a string. The
  7// allowed character set in the key depends on the use of the key.
  8type Key string
  9
 10// Bool creates a KeyValue instance with a BOOL Value.
 11//
 12// If creating both a key and value at the same time, use the provided
 13// convenience function instead -- Bool(name, value).
 14func (k Key) Bool(v bool) KeyValue {
 15	return KeyValue{
 16		Key:   k,
 17		Value: BoolValue(v),
 18	}
 19}
 20
 21// BoolSlice creates a KeyValue instance with a BOOLSLICE Value.
 22//
 23// If creating both a key and value at the same time, use the provided
 24// convenience function instead -- BoolSlice(name, value).
 25func (k Key) BoolSlice(v []bool) KeyValue {
 26	return KeyValue{
 27		Key:   k,
 28		Value: BoolSliceValue(v),
 29	}
 30}
 31
 32// Int creates a KeyValue instance with an INT64 Value.
 33//
 34// If creating both a key and value at the same time, use the provided
 35// convenience function instead -- Int(name, value).
 36func (k Key) Int(v int) KeyValue {
 37	return KeyValue{
 38		Key:   k,
 39		Value: IntValue(v),
 40	}
 41}
 42
 43// IntSlice creates a KeyValue instance with an INT64SLICE Value.
 44//
 45// If creating both a key and value at the same time, use the provided
 46// convenience function instead -- IntSlice(name, value).
 47func (k Key) IntSlice(v []int) KeyValue {
 48	return KeyValue{
 49		Key:   k,
 50		Value: IntSliceValue(v),
 51	}
 52}
 53
 54// Int64 creates a KeyValue instance with an INT64 Value.
 55//
 56// If creating both a key and value at the same time, use the provided
 57// convenience function instead -- Int64(name, value).
 58func (k Key) Int64(v int64) KeyValue {
 59	return KeyValue{
 60		Key:   k,
 61		Value: Int64Value(v),
 62	}
 63}
 64
 65// Int64Slice creates a KeyValue instance with an INT64SLICE Value.
 66//
 67// If creating both a key and value at the same time, use the provided
 68// convenience function instead -- Int64Slice(name, value).
 69func (k Key) Int64Slice(v []int64) KeyValue {
 70	return KeyValue{
 71		Key:   k,
 72		Value: Int64SliceValue(v),
 73	}
 74}
 75
 76// Float64 creates a KeyValue instance with a FLOAT64 Value.
 77//
 78// If creating both a key and value at the same time, use the provided
 79// convenience function instead -- Float64(name, value).
 80func (k Key) Float64(v float64) KeyValue {
 81	return KeyValue{
 82		Key:   k,
 83		Value: Float64Value(v),
 84	}
 85}
 86
 87// Float64Slice creates a KeyValue instance with a FLOAT64SLICE Value.
 88//
 89// If creating both a key and value at the same time, use the provided
 90// convenience function instead -- Float64(name, value).
 91func (k Key) Float64Slice(v []float64) KeyValue {
 92	return KeyValue{
 93		Key:   k,
 94		Value: Float64SliceValue(v),
 95	}
 96}
 97
 98// String creates a KeyValue instance with a STRING Value.
 99//
100// If creating both a key and value at the same time, use the provided
101// convenience function instead -- String(name, value).
102func (k Key) String(v string) KeyValue {
103	return KeyValue{
104		Key:   k,
105		Value: StringValue(v),
106	}
107}
108
109// StringSlice creates a KeyValue instance with a STRINGSLICE Value.
110//
111// If creating both a key and value at the same time, use the provided
112// convenience function instead -- StringSlice(name, value).
113func (k Key) StringSlice(v []string) KeyValue {
114	return KeyValue{
115		Key:   k,
116		Value: StringSliceValue(v),
117	}
118}
119
120// Defined returns true for non-empty keys.
121func (k Key) Defined() bool {
122	return len(k) != 0
123}