func (*BytesSchema) Prop(key string) (interface{}, bool) {
	return nil, false
}
Prop doesn't return anything valuable for BytesSchema.
package avro
import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"math"
	"reflect"
	"strings"
)
const (
	Record int = iota
	Enum
	Array
	Map
	Union
	Fixed
	String
	Bytes
	Int
	Long
	Float
	Double
	Boolean
	Null
	Recursive
)
const (
	typeRecord  = "record"
	typeUnion   = "union"
	typeEnum    = "enum"
	typeArray   = "array"
	typeMap     = "map"
	typeFixed   = "fixed"
	typeString  = "string"
	typeBytes   = "bytes"
	typeInt     = "int"
	typeLong    = "long"
	typeFloat   = "float"
	typeDouble  = "double"
	typeBoolean = "boolean"
	typeNull    = "null"
)
const (
	schemaAliasesField   = "aliases"
	schemaDefaultField   = "default"
	schemaDocField       = "doc"
	schemaFieldsField    = "fields"
	schemaItemsField     = "items"
	schemaNameField      = "name"
	schemaNamespaceField = "namespace"
	schemaSizeField      = "size"
	schemaSymbolsField   = "symbols"
	schemaTypeField      = "type"
	schemaValuesField    = "values"
)
type Schema interface {
	Type() int
	GetName() string
	Prop(key string) (interface{}, bool)
	String() string
	Validate(v reflect.Value) bool
}
type StringSchema struct{}
func (*StringSchema) String() string {
	return `{"type": "string"}`
}
func (*StringSchema) Type() int {
	return String
}
func (*StringSchema) GetName() string {
	return typeString
}
func (*StringSchema) Prop(key string) (interface{}, bool) {
	return nil, false
}
func (*StringSchema) Validate(v reflect.Value) bool {
	_, ok := dereference(v).Interface().(string)
	return ok
}
func (*StringSchema) MarshalJSON() ([]byte, error) {
	return []byte(`"string"`), nil
}
type BytesSchema struct{}
func (*BytesSchema) String() string {
	return `{"type": "bytes"}`
}
func (*BytesSchema) Type() int {
	return Bytes
}
func (*BytesSchema) GetName() string {
	return typeBytes
}