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

当我提供一个int作为time.Datefor的参数时month,它起作用(示例):

time.Date(2016, 1, 1, 0, 0, 0, 0, time.UTC)

为什么,当我尝试将 a 转换stringint然后使用该变量时,出现错误:

cannot use mStr (type int) as type time.Month in argument to time.Date

示例:https : //play.golang.org/p/-XFNZHK476


守着星空守着你
浏览 180回答 3
3回答

ibeautiful

您必须将值转换为正确的类型: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因此它会给您一个错误,表明您没有使用正确的类型。

Helenr

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

繁华开满天机

在第一个示例中,您将类型声明为 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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go