为了账号安全,请及时绑定邮箱和手机立即绑定

Go-验证数据类型

Go-验证数据类型

Go
当年话下 2021-04-09 14:15:31
如何为Go创建新的数据类型,以便在创建新的变量(该类型)时可以检查/验证其模式?例如,为了验证字符串是否包含20个字符,我尝试了以下操作:// Format: 2006-01-12T06:06:06Zfunc date(str string) {  if len(str) != 20 {    fmt.Println("error")  }}var Date = date()type Account struct {  domain  string  username string  created  Date}但是失败,因为Date不是类型。
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

在您的示例中,您将Date定义为变量,然后尝试将其用作类型。


我的猜测是您想做这样的事情。


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)

}


查看完整回答
反对 回复 2021-04-26
?
九州编程

TA贡献1785条经验 获得超4个赞

您可能需要Time标准库中的类型。文件资料


查看完整回答
反对 回复 2021-04-26
  • 2 回答
  • 0 关注
  • 220 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信