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

构造日期时使用 int 作为月份

构造日期时使用 int 作为月份

Go
守着星空守着你 2021-12-27 15:21:43
当我提供一个int作为time.Datefor的参数时month,它起作用(示例):time.Date(2016, 1, 1, 0, 0, 0, 0, time.UTC)为什么,当我尝试将 a 转换string为int然后使用该变量时,出现错误:cannot use mStr (type int) as type time.Month in argument to time.Date示例:https : //play.golang.org/p/-XFNZHK476
查看完整描述

3 回答

?
ibeautiful

TA贡献1993条经验 获得超5个赞

您必须将值转换为正确的类型:


import(

    "fmt" 

    "time" 

    "strconv"


func main() {

    var m, _ = strconv.Atoi("01")

     // Now convert m to type time.Month 

    fmt.Println(time.Date(2016, time.Month(m), 1, 0, 0, 0, 0, time.UTC))

}

您将其转换为 type int,但是的第二个参数time.Date()是 type ,time.Month因此它会给您一个错误,表明您没有使用正确的类型。


查看完整回答
反对 回复 2021-12-27
?
Helenr

TA贡献1780条经验 获得超3个赞

Go 编译器仅将常量转换为自己的类型。变量需要显式转换。


查看完整回答
反对 回复 2021-12-27
?
繁华开满天机

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

在第一个示例中,您将类型声明为 a time.Month,它不是 int,而是 a time.Month。在第二个示例中,类型是 int。如果您要进行演员表,就像在本例中一样,它会按您的预期工作;https://play.golang.org/p/drD_7KiJu4

如果在您的第一个示例中声明m为 anint或仅使用了:=运算符(隐含类型为 int),您将得到与第二个示例中相同的错误。在这里展示; https://play.golang.org/p/iWc-2Mpsly



查看完整回答
反对 回复 2021-12-27
  • 3 回答
  • 0 关注
  • 179 浏览
慕课专栏
更多

添加回答

举报

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