| 123456789101112131415161718192021222324252627282930313233343536373839404142 | package serialimport (	"fmt"	"strings")// ToString serialize an abitrary value into string.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) func([]byte) (int, error) {	return func(b []byte) (int, error) {		return copy(b, []byte(s)), nil	}}
 |