| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 | package serialimport (	"fmt"	"strings"	"v2ray.com/core/common/buf")func ToString(v interface{}) string {	if v == nil {		return " "	}	switch value := v.(type) {	case string:		return value	case *string:		return *value	case fmt.Stringer:		return value.String()	case error:		return value.Error()	case []byte:		return BytesToHexString(value)	default:		return fmt.Sprintf("%+v", value)	}}func Concat(v ...interface{}) string {	values := make([]string, len(v))	for i, value := range v {		values[i] = ToString(value)	}	return strings.Join(values, "")}func WriteString(s string) buf.BytesWriter {	return func(b []byte) int {		copy(b, []byte(s))		return len(s)	}}
 |