当我为int
time.Date
提供month
作为参数时,它有效(Example):
time.Date(2016, 1, 1, 0, 0, 0, 0, time.UTC)
为什么,当我尝试将string
转换为int
然后使用该变量时,我收到错误:
cannot use mStr (type int) as type time.Month in argument to time.Date
答案 0 :(得分:12)
您必须将值转换为正确的类型:
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))
}
您已将其转换为int
类型,但time.Date()
的第二个参数属于time.Month
类型,因此它会给您一个错误,表明您没有使用正确的类型。< / p>
答案 1 :(得分:1)
在第一个示例中,您将类型声明为time.Month
,它不是int,而是time.Month
。在第二个示例中,类型是int。如果你要进行演员表演,就像在这个例子中一样,它会像你期望的那样工作; https://play.golang.org/p/drD_7KiJu4
如果在您的第一个示例中,您将m
声明为int
或仅使用:=
运算符(隐含类型将为int),您将获得与第二个例子。在这里展示; https://play.golang.org/p/iWc-2Mpsly
答案 2 :(得分:0)
Go编译器仅将常量转换为类型。需要显式转换变量。