2013-05-22 18 views
17

我是GO语言的新手,现在我面临一个小问题。 当我打电话给时间秒(),年()等,他们给了我一个整数,但当我打电话给月(),它给了我一个月份类型变量。在Go中的月份

从在线文档,我看到

type Month int 
... 
func (m Month) String() string 

,但我不太明白。 我的代码有以下错误,因为m不是int。 我应该如何从月份得到int?

无效操作:m/time.Month(10) + offset(类型不匹配time.Month和INT)

回答

32

考虑到:

var m time.Month 

m的类型底层类型是int,所以可以convertedint

var i int = int(m) // normally written as 'i := int(m)' 

在一个侧面说明:问题示出了师m/time.Month(10)'。这可能是一个错误,除非你想计算一些dekamonth值;-)

+0

ThX,我写的代码是字节(m/10 +偏移量),但工具“巧妙地”在错误日志中显示m/time.Month(10)。 – Nick

8

你必须明确地将其转换为int:

var m Month = ... 
var i int = int(m) 

入住这minimal example中去操场。

+0

这是真正的转换,而不是类型转换。 –

+0

@DominikHonnef你是对的=)。我已经更新了我的答案。 – Brainstorm