Durasi Waktu
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 62 dari 68.
Saat bekerja dengan waktu di Go, kamu akan sering perlu merepresentasikan durasi waktu, seperti "5 menit" atau "2 jam". Go menyediakan tipe time.Duration khusus untuk tujuan ini.
time.Duration merepresentasikan rentang waktu antara dua saat. Go menyertakan beberapa konstanta bawaan yang membuat pembuatan durasi menjadi sederhana dan mudah dibaca:
tenMinutes := 10 * time.Minute
twoHours := 2 * time.Hour
thirtySeconds := 30 * time.SecondKonstanta durasi yang paling umum digunakan adalah time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute, dan time.Hour. Kamu bisa mengalikan konstanta ini dengan bilangan bulat untuk membuat durasi yang tepat sesuai kebutuhanmu.
Nilai durasi sangat penting untuk aritmetika waktu, operasi penjadwalan, dan mengendalikan pengaturan waktu dalam programmu. Nilai ini bekerja lancar dengan fungsi waktu lainnya dan menyediakan cara yang jelas serta mudah dibaca untuk menyatakan rentang waktu dalam kodemu.
Tantangan
MudahBuat timer sesi latihan yang menggunakan time.Duration untuk melacak berbagai interval latihan dan waktu istirahat. Tantangan ini akan menguji kemampuanmu membuat nilai durasi menggunakan konstanta bawaan Go dan melakukan perhitungan dengannya.
Kamu akan menerima dua input:
- Sebuah string berisi definisi latihan dengan format
"exercise1:duration_value:duration_unit,exercise2:duration_value:duration_unit"(misalnya,"Push-ups:30:Second,Plank:2:Minute,Squats:45:Second") - Sebuah string berisi informasi waktu istirahat dengan format
"rest_duration_value:rest_duration_unit"(misalnya,"15:Second")
Tugasmu adalah:
- Parsing input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan setiap entri latihan
- Untuk setiap entri latihan, pisahkan berdasarkan titik dua untuk mengambil nama latihan, nilai durasi (sebagai string), dan satuan durasi
- Parsing input kedua dengan memisahkannya berdasarkan titik dua untuk mendapatkan nilai dan satuan durasi istirahat
- Ubah nilai durasi dari string menjadi integer dan buat object
time.Durationmenggunakan konstanta yang sesuai:- Untuk
"Second": kalikan dengantime.Second - Untuk
"Minute": kalikan dengantime.Minute - Untuk
"Hour": kalikan dengantime.Hour
- Untuk
- Tampilkan header aplikasi:
"=== WORKOUT SESSION TIMER ===" - Tampilkan penyiapan sesi:
"Setting up workout session..." - Untuk setiap latihan, tampilkan:
"Exercise: [exercise_name] - Duration: [duration_object]" - Tampilkan waktu istirahat:
"Rest period between exercises: [rest_duration_object]" - Hitung dan tampilkan perincian sesi:
"=== SESSION BREAKDOWN ==="- Untuk setiap latihan:
"[exercise_name]: [duration_in_seconds] seconds" "Rest periods: [rest_duration_in_seconds] seconds each"
- Hitung total waktu sesi, yaitu jumlah semua durasi latihan ditambah waktu istirahat di antara latihan:
"=== TIMING CALCULATIONS ===""Total exercise time: [total_exercise_duration_object]""Total rest time: [total_rest_duration_object]"(waktu istirahat di antara latihan, jadi jumlahnya satu kurang dari jumlah latihan)"Complete session duration: [total_session_duration_object]"
- Tampilkan statistik sesi:
"=== SESSION STATISTICS ===""Number of exercises: [number_of_exercises]""Longest exercise: [longest_exercise_name] ([longest_duration_object])""Shortest exercise: [shortest_exercise_name] ([shortest_duration_object])""Average exercise duration: [average_duration_in_seconds] seconds"
- Tampilkan konversi waktu:
"=== TIME CONVERSIONS ===""Session duration in minutes: [total_minutes]"(konversikan total durasi sesi ke menit)"Session duration in hours: [total_hours]"(konversikan total durasi sesi ke jam, tampilkan sebagai angka desimal)
- Tampilkan pesan penyelesaian:
"Workout session timer configured successfully"
Gunakan package time untuk mengolah durasi, package strings untuk memisahkan string input, package strconv untuk mengubah angka dalam string menjadi integer, dan package fmt untuk output berformat. Ingat bahwa nilai time.Duration dapat dijumlahkan dan dikonversikan ke satuan lain menggunakan method seperti Seconds(), Minutes(), dan Hours(). Tantangan ini menunjukkan cara membuat dan mengolah nilai durasi untuk aplikasi pencatat waktu.
Coba sendiri
package main
import (
"fmt"
"strconv"
"strings"
"time"
)
func main() {
// Baca input
var exerciseInput string
var restInput string
fmt.Scanln(&exerciseInput)
fmt.Scanln(&restInput)
// Uraikan latihan dari input
exerciseEntries := strings.Split(exerciseInput, ",")
// Uraikan waktu istirahat dari input
restParts := strings.Split(restInput, ":")
// TODO: Tulis kodemu di bawah ini
// 1. Uraikan setiap entri latihan untuk mengambil nama, nilai durasi, dan satuan
// 2. Ubah nilai durasi menjadi bilangan bulat dan buat object time.Duration
// 3. Uraikan durasi istirahat dan buat object time.Duration
// 4. Tampilkan informasi dan perhitungan sesi latihan
// 5. Hitung statistik sesi dan konversi waktu
// Ingat untuk menghasilkan output berisi semua informasi yang diminta dalam tantangan
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan PerilakuLatihan sendiri: Compiler Go online