Go-验证数据类型

如何为Go创建新的数据类型,以便在创建新的变量(该类型)时可以检查/验证其模式?


例如,为了验证字符串是否包含20个字符,我尝试了以下操作:


// 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

}

但是失败,因为Date不是类型。


当年话下
浏览 241回答 2
2回答

潇湘沐

在您的示例中,您将Date定义为变量,然后尝试将其用作类型。我的猜测是您想做这样的事情。package mainimport (    "fmt"    "os"    "time")type Date int64type 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)}

九州编程

您可能需要Time标准库中的类型。文件资料。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go