2013-05-22 22 views
17

Tôi mới sử dụng ngôn ngữ GO và giờ tôi đang gặp phải một chút vấn đề. Khi tôi gọi Time's Second(), Year(), vv, chúng cho tôi một số nguyên nhưng khi tôi gọi Month(), nó đã cho tôi một biến kiểu Month.Tháng để vào trong Go

Từ các tài liệu trên mạng, tôi thấy

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

nhưng tôi không hoàn toàn hiểu nó. mã của tôi có lỗi sau vì m không phải là int. Tôi nên lấy int từ tháng như thế nào?

hoạt động không hợp lệ: m/time.Month(10) + offset (loại không phù hợp time.Month và int)

Trả lời

32

Xét:

var m time.Month 

m 's loại tiềm ẩn loại là int, vì vậy nó có thể được converted để int:

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

Trên một mặt lưu ý: Câu hỏi đặt ra cho thấy một bộ phận' m/time.Month(10) '. Đó có thể là lỗi trừ khi bạn muốn tính toán một số giá trị dekamonth ;-)

+0

ThX, mã tôi viết là byte (m/10 + offset) nhưng công cụ "thông minh" hiển thị m/time.Month (10) trong nhật ký lỗi. – Nick

8

Bạn cần phải chuyển đổi một cách rõ ràng nó đến một int:

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

Kiểm tra minimal example này ở sân chơi đi.

+0

Thực sự chuyển đổi và không nhập loại. –

+0

@DominikHonnef Bạn đúng =). Tôi đã cập nhật câu trả lời của mình. – Brainstorm

Các vấn đề liên quan