Golang中的结构体与映射表使用指南
Golang中的结构体与映射表使用指南 看看这个小程序,因为它确实是个程序,对吧?
不管怎样… https://play.golang.org/p/bp13cLhKIBy
是否有可能创建一个映射,显示科目名称、教师姓名和上课时间?我不知道该用什么类型来表示时间。
那么我应该使用 map[string]string 吗?
以下是对地图的尝试,不包括时间 https://play.golang.org/p/z-J9mW_qve_P
这是我的尝试。
https://play.golang.org/p/JzDDgIEoa0G
我遇到了:意外的换行符,期望逗号或 }
但我确实在那里加了"}"。
有趣。我会尝试一下。
如果您愿意将课程时间存储为字符串,那么可以这样做;如果您想将其作为其他类型,则不行。
感觉您可能需要使用结构体。
不存在 map[string]string string(如果我没理解错的话)。
如果你想将某些字符串表示形式放入 map[string]string 中,可以这样操作:
m := make(map[string]string)
m["date"] = "2018-01-01"
但实际上很少需要这样做。
而且这并不适合你的数据,看起来你原本是想将课程名称映射到对应的教师。如果把日期放进去,就会变成名为"date"的课程由"2018-01-01"来教授。
正如我之前所说,你可能需要重新考虑你的数据结构设计。
在Go语言中,你可以使用结构体和映射表来存储科目名称、教师姓名和上课时间。对于时间表示,建议使用time.Time类型来处理日期和时间,它提供了丰富的功能来格式化和操作时间数据。以下是一个示例代码,展示如何创建一个映射,其中键为科目名称,值为包含教师姓名和上课时间的结构体。
首先,定义一个结构体来存储课程信息:
package main
import (
"fmt"
"time"
)
type ClassInfo struct {
Teacher string
Time time.Time
}
然后,创建一个映射,键为科目名称(字符串),值为ClassInfo结构体:
func main() {
// 创建一个映射来存储课程信息
classSchedule := make(map[string]ClassInfo)
// 示例:添加一个课程条目
// 使用 time.Date 来创建时间对象,参数依次为:年、月、日、时、分、秒、纳秒、时区
classTime := time.Date(2023, time.October, 15, 9, 0, 0, 0, time.UTC)
classSchedule["Mathematics"] = ClassInfo{
Teacher: "Dr. Smith",
Time: classTime,
}
// 添加另一个课程
anotherTime := time.Date(2023, time.October, 15, 11, 0, 0, 0, time.UTC)
classSchedule["Physics"] = ClassInfo{
Teacher: "Prof. Johnson",
Time: anotherTime,
}
// 遍历映射并打印课程信息
for subject, info := range classSchedule {
fmt.Printf("Subject: %s, Teacher: %s, Time: %s\n", subject, info.Teacher, info.Time.Format("2006-01-02 15:04:05"))
}
}
在这个示例中:
- 我们定义了一个
ClassInfo结构体,包含Teacher(字符串)和Time(time.Time类型)字段。 - 使用
make函数初始化一个映射classSchedule,键类型为string(科目名称),值类型为ClassInfo。 - 通过
time.Date函数创建具体的时间对象,指定年、月、日、时、分、秒、纳秒和时区(这里使用UTC)。 - 将课程信息添加到映射中,然后遍历映射并打印每个科目的详细信息。时间使用
Format方法格式化为可读字符串("2006-01-02 15:04:05"是Go语言中时间格式化的标准布局)。
运行此代码将输出:
Subject: Mathematics, Teacher: Dr. Smith, Time: 2023-10-15 09:00:00
Subject: Physics, Teacher: Prof. Johnson, Time: 2023-10-15 11:00:00
这种方法允许你灵活地存储和检索课程数据。如果你需要处理重复时间或更复杂的时间逻辑,可以考虑使用time包的其他功能,如time.Weekday来表示每周的课程安排。


