package attributes
import "google.golang.org/grpc/attributes"
Package attributes defines a generic key/value store used in various gRPC components.
All APIs in this package are EXPERIMENTAL.
Index ¶
Examples ¶
Types ¶
type Attributes ¶
type Attributes struct {
// contains filtered or unexported fields
}
Attributes is an immutable struct for storing and retrieving generic
key/value pairs. Keys must be hashable, and users should define their own
types for keys.
Code:play
Output:Example¶
package main
import (
"fmt"
"google.golang.org/grpc/attributes"
)
func main() {
type keyOne struct{}
type keyTwo struct{}
a := attributes.New(keyOne{}, 1, keyTwo{}, "two")
fmt.Println("Key one:", a.Value(keyOne{}))
fmt.Println("Key two:", a.Value(keyTwo{}))
}
Key one: 1
Key two: two
func New ¶
func New(kvs ...interface{}) *Attributes
New returns a new Attributes containing all key/value pairs in kvs. If the same key appears multiple times, the last value overwrites all previous values for that key. Panics if len(kvs) is not even.
func (*Attributes) Value ¶
func (a *Attributes) Value(key interface{}) interface{}
Value returns the value associated with these attributes for key, or nil if no value is associated with key.
func (*Attributes) WithValues ¶
func (a *Attributes) WithValues(kvs ...interface{}) *Attributes
WithValues returns a new Attributes containing all key/value pairs in a and
kvs. Panics if len(kvs) is not even. If the same key appears multiple
times, the last value overwrites all previous values for that key. To
remove an existing key, use a nil value.
Code:play
Output:Example¶
package main
import (
"fmt"
"google.golang.org/grpc/attributes"
)
func main() {
type keyOne struct{}
type keyTwo struct{}
a := attributes.New(keyOne{}, 1)
a = a.WithValues(keyTwo{}, "two")
fmt.Println("Key one:", a.Value(keyOne{}))
fmt.Println("Key two:", a.Value(keyTwo{}))
}
Key one: 1
Key two: two
Source Files ¶
attributes.go
- Version
- v1.31.1
- Published
- Aug 25, 2020
- Platform
- linux/amd64
- Imports
- 1 packages
- Last checked
- 1 hour ago –
Tools for package owners.