You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go 1.18如何创建(int, time.Month, int)类型的日期元组数组?

在Go 1.18中创建(int, time.Month, int)类型的日期元组数组

Go语言没有原生元组类型,你想要的(int, time.Month, int)本质是一组不同类型值的组合,需要通过自定义结构体来实现,以下是修正后的可行方案:

方法一:定义命名结构体(推荐,可读性高)

先定义结构体封装年、月、日字段,再创建该结构体的数组:

package main

import (
    "time"
)

// 定义日期元组结构体
type DateTuple struct {
    Year  int
    Month time.Month
    Day   int
}

func main() {
    // 初始化日期元组数组
    days := []DateTuple{
        // 直接字面量初始化
        {Year: 2022, Month: time.July, Day: 4},
        // 从time.Date的返回值构造
        func() DateTuple {
            y, m, d := time.Date(2022, time.August, 15, 0, 0, 0, 0, time.UTC).Date()
            return DateTuple{y, m, d}
        }(),
    }
}

方法二:使用匿名结构体(无需额外定义类型)

如果不想单独定义结构体,可以直接使用匿名结构体数组:

package main

import (
    "time"
)

func main() {
    days := []struct {
        Year  int
        Month time.Month
        Day   int
    }{
        {2022, time.July, 4},
        // 利用匿名函数转换time.Date的返回值
        {
            func() (int, time.Month, int) {
                return time.Date(2022, time.August, 15, 0, 0, 0, 0, time.UTC).Date()
            }(),
        },
    }
}

原代码问题说明

  1. 语法错误:Go中不存在[](int, month, int)这种数组类型写法,且month未定义,正确的类型引用是time.Month
  2. 类型不匹配:time.Date().Date()返回三个独立的返回值,不能直接作为单个元素放入数组,需要封装为结构体实例后再存入

内容的提问来源于stack exchange,提问作者BAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:35:23