Go - Data Types to Check

How to create a new data type for Go that can check / verify its schema when creating a new variable (of this type)?

For example, to check if a string has 20 characters, I tried:

// Format: 2006-01-12T06:06:06Z func date(str string) { if len(str) != 20 { fmt.Println("error") } } var Date = date() type Account struct { domain string username string created Date } 

but it fails because Date is not a type.

+4
source share
2 answers

In your example, you defined Date as a variable, and then tried to use it as a type.

I guess you want to do something like this.

 package main import ( "fmt" "os" "time" ) type Date int64 type Account struct { domain string username string created Date } func NewDate(date string) (Date, os.Error) { // date format: 2006-01-12T06:06:06Z if len(date) == 0 { // default to today today := time.UTC() date = today.Format(time.ISO8601) } t, err := time.Parse(time.ISO8601, date) if err != nil { return 0, err } return Date(t.Seconds()), err } func (date Date) String() string { t := time.SecondsToUTC(int64(date)) return t.Format(time.ISO8601) } func main() { var account Account date := "2006-01-12T06:06:06Z" created, err := NewDate(date) if err == nil { account.created = created } else { fmt.Println(err.String()) } fmt.Println(account.created) } 
+3
source

You probably need the Time type from the standard library. Documentation

+1
source

Source: https://habr.com/ru/post/1306900/


All Articles