go-bot

Форк
0
60 строк · 1.2 Кб
1
// Copyright 2018 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4

5
//go:build purego || appengine
6
// +build purego appengine
7

8
package protoreflect
9

10
import "google.golang.org/protobuf/internal/pragma"
11

12
type valueType int
13

14
const (
15
	nilType valueType = iota
16
	boolType
17
	int32Type
18
	int64Type
19
	uint32Type
20
	uint64Type
21
	float32Type
22
	float64Type
23
	stringType
24
	bytesType
25
	enumType
26
	ifaceType
27
)
28

29
// value is a union where only one type can be represented at a time.
30
// This uses a distinct field for each type. This is type safe in Go, but
31
// occupies more memory than necessary (72B).
32
type value struct {
33
	pragma.DoNotCompare // 0B
34

35
	typ   valueType   // 8B
36
	num   uint64      // 8B
37
	str   string      // 16B
38
	bin   []byte      // 24B
39
	iface interface{} // 16B
40
}
41

42
func valueOfString(v string) Value {
43
	return Value{typ: stringType, str: v}
44
}
45
func valueOfBytes(v []byte) Value {
46
	return Value{typ: bytesType, bin: v}
47
}
48
func valueOfIface(v interface{}) Value {
49
	return Value{typ: ifaceType, iface: v}
50
}
51

52
func (v Value) getString() string {
53
	return v.str
54
}
55
func (v Value) getBytes() []byte {
56
	return v.bin
57
}
58
func (v Value) getIface() interface{} {
59
	return v.iface
60
}
61

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.