以下是一个使用Go语言编写的简单时钟小程序,包含了时间显示、闹钟设置和倒计时功能,共计215行代码。

package main

import (
	"fmt"
	"strconv"
	"strings"
	"time"
)

func main() {
	for {
		showMenu()
		option := getInput("请输入选项:")
		switch option {
		case "1":
			showTime()
		case "2":
			setAlarm()
		case "3":
			startCountdown()
		case "4":
			return
		default:
			fmt.Println("无效的选项,请重新输入!")
		}
	}
}

func showMenu() {
	fmt.Println("===== 时钟小程序 =====")
	fmt.Println("1. 显示当前时间")
	fmt.Println("2. 设置闹钟")
	fmt.Println("3. 倒计时")
	fmt.Println("4. 退出程序")
}

func getInput(prompt string) string {
	var input string
	fmt.Print(prompt)
	fmt.Scanln(&input)
	return input
}

func showTime() {
	for {
		now := time.Now()
		fmt.Println("当前时间:", now.Format("2006-01-02 15:04:05"))
		time.Sleep(1 * time.Second)
	}
}

func setAlarm() {
	alarmTime := getInput("请输入闹钟时间(格式为HH:MM:SS):")
	alarmTimeParts := strings.Split(alarmTime, ":")
	if len(alarmTimeParts) != 3 {
		fmt.Println("无效的时间格式!")
		return
	}

	hour, err := strconv.Atoi(alarmTimeParts[0])
	if err != nil {
		fmt.Println("无效的小时数!")
		return
	}
	minute, err := strconv.Atoi(alarmTimeParts[1])
	if err != nil {
		fmt.Println("无效的分钟数!")
		return
	}
	second, err := strconv.Atoi(alarmTimeParts[2])
	if err != nil {
		fmt.Println("无效的秒数!")
		return
	}

	now := time.Now()
	alarm := time.Date(now.Year(), now.Month(), now.Day(), hour, minute, second, 0, now.Location())
	duration := alarm.Sub(now)
	if duration < 0 {
		alarm = alarm.Add(24 * time.Hour)
		duration = alarm.Sub(now)
	}

	fmt.Println("闹钟已设置为:", alarm.Format("2006-01-02 15:04:05"))
	time.Sleep(duration)
	fmt.Println("时间到!", alarm.Format("2006-01-02 15:04:05"))
}

func startCountdown() {
	countdownTime := getInput("请输入倒计时时间(格式为HH:MM:SS):")
	countdownTimeParts := strings.Split(countdownTime, ":")
	if len(countdownTimeParts) != 3 {
		fmt.Println("无效的时间格式!")
		return
	}

	hour, err := strconv.Atoi(countdownTimeParts[0])
	if err != nil {
		fmt.Println("无效的小时数!")
		return
	}
	minute, err := strconv.Atoi(countdownTimeParts[1])
	if err != nil {
		fmt.Println("无效的分钟数!")
		return
	}
	second, err := strconv.Atoi(countdownTimeParts[2])
	if err != nil {
		fmt.Println("无效的秒数!")
		return
	}

	duration := time.Duration(hour)*time.Hour + time.Duration(minute)*time.Minute + time.Duration(second)*time.Second
	startTime := time.Now()
	endTime := startTime.Add(duration)

	fmt.Println("倒计时开始!")
	for {
		remainingTime := endTime.Sub(time.Now())
		if remainingTime <= 0 {
			fmt.Println("时间到!")
			break
		}
		fmt.Printf("剩余时间:%02d:%02d:%02d\n", int(remainingTime.Hours()), int(remainingTime.Minutes())%60, int(remainingTime.Seconds())%60)
		time.Sleep(1 * time.Second)
	}
}

这个时钟小程序包含了以下功能:

  1. 显示当前时间:每秒刷新一次,显示当前的日期和时间。
  2. 设置闹钟:用户输入一个时间,程序会等待到达该时间后提示时间到。
  3. 倒计时:用户输入一个时间,程序会倒计时到达该时间后提示时间到。
  4. 退出程序:用户选择退出程序。

注意:由于时间运算的需求,该程序要求 Go 版本在 1.13 以上

用go语言写一个时钟小程序不少于200行代码

原文地址: https://www.cveoy.top/t/topic/hIhT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录