github.com/best4tires/kit@v1.0.5/convert/string.go (about)

     1  package convert
     2  
     3  import (
     4  	"database/sql"
     5  	"fmt"
     6  )
     7  
     8  func ToString(v any) string {
     9  	if str, ok := v.(fmt.Stringer); ok {
    10  		return str.String()
    11  	}
    12  
    13  	switch v := v.(type) {
    14  	case sql.NullString:
    15  		return v.String
    16  	case sql.NullInt64:
    17  		return ToString(v.Int64)
    18  	case sql.NullInt32:
    19  		return ToString(v.Int32)
    20  	case sql.NullInt16:
    21  		return ToString(v.Int16)
    22  	case sql.NullFloat64:
    23  		return ToString(v.Float64)
    24  	case sql.NullBool:
    25  		return ToString(v.Bool)
    26  	case sql.NullTime:
    27  		return ToString(v.Time)
    28  	case *sql.NullString:
    29  		return v.String
    30  	case *sql.NullInt64:
    31  		return ToString(v.Int64)
    32  	case *sql.NullInt32:
    33  		return ToString(v.Int32)
    34  	case *sql.NullInt16:
    35  		return ToString(v.Int16)
    36  	case *sql.NullFloat64:
    37  		return ToString(v.Float64)
    38  	case *sql.NullBool:
    39  		return ToString(v.Bool)
    40  	case *sql.NullTime:
    41  		return ToString(v.Time)
    42  	default:
    43  		return fmt.Sprintf("%v", v)
    44  	}
    45  }