시간에 대한 '0'값은 무엇입니까?


157

오류 조건 nil에서을 반환하려고 하면 오류가 발생합니다.

cannot use nil as type time.Time in return argument

zero가치 는 무엇입니까 time.Time?


30
그리고 당신은 IsZero()제로 시간을 감지하는 데 사용할 수 있습니다 .
Matt

답변:


156

time.Time구조체 리터럴을 호출하면 Go의 0 날짜가 반환됩니다. 따라서 다음 인쇄 문의 경우 :

fmt.Println(time.Time{})

출력은 다음과 같습니다.

0001-01-01 00:00:00 +0000 UTC

완벽을 기하기 위해 공식 문서 에는 다음과 같이 명시되어 있습니다.

Time 유형의 0 값은 1 년 1 월 1 일 00 : 00 : 00.000000000 UTC입니다.


7
"인수 없음"은 함수 호출처럼 들립니다. 필드가 지정되지 않은 구조체 리터럴입니다. X {}는 X에 대한 구조체 X의 제로 값입니다.
Russ Cox

1
@RussCox 나는 그것이 사실이라고 생각하지 않습니다. 내 경우에는 'omitempty'속성을 갖는 구조체의 time.Time 필드가 있습니다. 해당 값을 설정하지 않으면 무시되지 않고 자동으로 0001-01-01 00:00:00 +0000 UTC로 설정됩니다.
Gaurav Ojha

1
@GauravOjha time.Time 필드가있는 Golang JSON omitempty를 참조하십시오 .
icza

301

대신 Time.IsZero () 함수를 사용해야합니다.

func (Time) IsZero

func (t Time) IsZero() bool
IsZero reports whether t represents the zero time instant, January 1, year 1, 00:00:00 UTC.

실제로, 주어진 시간 값이 0인지 아닌지를 비교한다면, 이것이 실제로 사용되어야하는 것입니다.
Gaurav Ojha

7
이것은 비교에 대한 정답이지만 OP는 비교에 대해 묻지 않고 제로 값을 초기화하는 방법을 묻습니다. 허용 된 답변이 맞습니다.
mikijov

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.