Je viens juste de commencer avec Go, et dans le premier programme que j'ai écrit que j'imprimé un struct, qui a montré égalementPourquoi l'heure dans Go est-elle imprimée différemment dans une structure?
{wall:0 ext:63533980800 loc:<nil>}
Être perplexe sur ce qui était, il semblait être un type time.Time()
, et google search m'a amené à this part of the Go source code dans lequel la différence entre "l'horloge murale" et "l'horloge monotone" est expliquée dans les commentaires.
Donc, pour le tester dans l'isolement, je créé un nouveau programme minimaliste:
package main
import (
"fmt"
"time"
)
type TheStruct struct {
the_time time.Time
}
func main() {
the_struct := TheStruct{time.Now()}
fmt.Println(the_struct)
fmt.Printf("%+v\n", the_struct)
fmt.Println(the_struct.the_time)
fmt.Println()
the_struct_2 := TheStruct{time.Unix(1505099248, 200)}
fmt.Println(the_struct_2)
fmt.Printf("%+v\n", the_struct_2)
fmt.Println(the_struct_2.the_time)
}
qui imprime les éléments suivants:
{{13719544904843884912 534246 0x1140680}}
{the_time:{wall:13719544904843884912 ext:534246 loc:0x1140680}}
2017-09-11 05:08:11.35635032 +0200 CEST m=+0.000534246
{{200 63640696048 0x1140680}}
{the_time:{wall:200 ext:63640696048 loc:0x1140680}}
2017-09-11 05:07:28 +0200 CEST
Je me demande donc de deux choses:
- Pourquoi l'heure est-elle si une partie d'une structure est imprimée en tant qu'horloge murale par rapport à la notation de date-heure plus habituelle lors de l'impression separatel y (en utilisant
the_struct.the_time
)? - Est-ce un problème que le code de mon autre programme affiche
<nil>
pour loc? Comment pourrais-je résoudre cela?