Go 구조체의 날짜/시간 처리
Go에서 데이터베이스 레코드로 구조체를 채울 때 null 허용 날짜/시간 열의 처리는 도전. 다음 구조체를 고려하세요.
type Reminder struct { Id int CreatedAt time.Time RemindedAt *time.Time SenderId int ReceiverId int }
이 예에서 RemindAt는 null 허용 값을 처리하기 위한 포인터로 표시됩니다. 그러나 이 접근 방식에서는 코드에서 null이 아닌 값과 null 값을 구별해야 하므로 번거로울 수 있습니다.
향상된 솔루션
이 문제를 해결하려면 Go pq.NullTime 또는 sql.NullTime(Go 1.13) 유형을 제공합니다. 접근 방식:
type Reminder struct { Id int CreatedAt time.Time RemindedAt pq.NullTime // or sql.NullTime SenderId int ReceiverId int }
NullTime은 다음 필드를 정의합니다.
type NullTime struct { Time time.Time Valid bool // Valid is true if Time is not NULL }
데이터베이스 레코드를 스캔할 때 유효 필드는 시간에 유효한 날짜/시간 값이 있는지 또는 null인지 여부를 나타냅니다.
사용
데이터베이스 행을 미리 알림으로 스캔하려면 구조체:
row := db.QueryRow("...") err := row.Scan(&id, &reminder.CreatedAt, &reminder.RemindedAt, &senderId, &receiverId)
RemindAt 필드에 액세스하려면 유효한 필드를 확인하세요.
if reminder.RemindedAt.Valid { // RemindedAt has a valid datetime value } else { // RemindedAt is null }
이 접근 방식을 사용하면 Go 구조체에서 null 허용 날짜/시간 열 처리가 단순화되어 수동으로 구현할 필요가 없습니다. null 검사.
위 내용은 Go 구조체에서 Null 허용 날짜/시간 열을 효율적으로 처리하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!