package lzUtils import ( "database/sql" "time" ) // StringToNullString 将 string 转换为 sql.NullString func StringToNullString(s string) sql.NullString { return sql.NullString{ String: s, Valid: s != "", } } // NullStringToString 将 sql.NullString 转换为 string func NullStringToString(ns sql.NullString) string { if ns.Valid { return ns.String } return "" } // TimeToNullTime 将 time.Time 转换为 sql.NullTime func TimeToNullTime(t time.Time) sql.NullTime { return sql.NullTime{ Time: t, Valid: !t.IsZero(), // 仅当 t 不是零值时才设置为有效 } } // NullTimeToTime 将 sql.NullTime 转换为 time.Time func NullTimeToTime(nt sql.NullTime) time.Time { if nt.Valid { return nt.Time } return time.Time{} // 返回零值时间 } // Int64ToNullInt64 将 int64 转换为 sql.NullInt64 func Int64ToNullInt64(i int64) sql.NullInt64 { return sql.NullInt64{ Int64: i, Valid: i != 0, // 仅当 i 非零时才设置为有效 } } // NullInt64ToInt64 将 sql.NullInt64 转换为 int64 func NullInt64ToInt64(ni sql.NullInt64) int64 { if ni.Valid { return ni.Int64 } return 0 // 返回零值 int64 } // Float64ToNullFloat64 将 float64 转换为 sql.NullFloat64 // Valid 字段在 f 非零时设置为有效(注意:NaN 会被视为有效,需结合业务场景使用) func Float64ToNullFloat64(f float64) sql.NullFloat64 { return sql.NullFloat64{ Float64: f, Valid: f != 0, } } // NullFloat64ToFloat64 将 sql.NullFloat64 转换为 float64 // 当 Valid 为 false 时,返回 float64 零值 func NullFloat64ToFloat64(nf sql.NullFloat64) float64 { if nf.Valid { return nf.Float64 } return 0.0 }