Zaman Süresi
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 62 / 68.
Go'da zamanla çalışırken, genellikle "5 dakika" veya "2 saat" gibi zaman aralıklarını temsil etmeniz gerekecektir. Go, özellikle bu amaç için time.Duration türünü sağlar.
Bir time.Duration, iki an arasındaki bir zaman aralığını temsil eder. Go, süre oluşturmayı basit ve okunabilir kılan birkaç önceden tanımlanmış sabit içerir:
tenMinutes := 10 * time.Minute
twoHours := 2 * time.Hour
thirtySeconds := 30 * time.SecondEn yaygın kullanılan süre sabitleri şunlardır: time.Nanosecond, time.Microsecond, time.Millisecond, time.Second, time.Minute ve time.Hour. İhtiyacınız olan tam süreyi oluşturmak için bu sabitleri tam sayılarla çarpabilirsiniz.
Süre değerleri; zaman aritmetiği, zamanlama işlemleri ve programlarınızdaki zamanlamayı kontrol etmek için temeldir. Diğer zaman fonksiyonlarıyla sorunsuz bir şekilde çalışırlar ve kodunuzdaki zaman aralıklarını ifade etmek için net ve okunabilir bir yol sunarlar.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
KolayFarklı egzersiz aralıklarını ve dinlenme sürelerini takip etmek için time.Duration kullanan bir antrenman seansı zamanlayıcısı oluşturun. Bu zorluk, Go'nun önceden tanımlanmış sabitlerini kullanarak süre değerleri oluşturma ve bunlarla hesaplamalar yapma yeteneğinizi test edecektir.
İki girdi alacaksınız:
"egzersiz1:süre_değeri:süre_birimi,egzersiz2:süre_değeri:süre_birimi"formatında egzersiz tanımlarını içeren bir dize (örneğin,"Push-ups:30:Second,Plank:2:Minute,Squats:45:Second")"dinlenme_süresi_değeri:dinlenme_süresi_birimi"formatında dinlenme süresi bilgilerini içeren bir dize (örneğin,"15:Second")
Göreviniz şunları yapmaktır:
- Bireysel egzersiz girişlerini elde etmek için ilk girdiyi virgüllere göre ayırarak ayrıştırın
- Her egzersiz girişi için, egzersiz adını, süre değerini (dize olarak) ve süre birimini çıkarmak için iki nokta üst üste işaretine göre ayırın
- Dinlenme süresi değerini ve birimini elde etmek için ikinci girdiyi iki nokta üst üste işaretine göre ayırarak ayrıştırın
- Süre değerlerini dizelerden tam sayılara dönüştürün ve uygun sabitleri kullanarak
time.Durationnesneleri oluşturun:"Second"için:time.Secondile çarpın"Minute"için:time.Minuteile çarpın"Hour"için:time.Hourile çarpın
- Uygulama başlığını görüntüleyin:
"=== WORKOUT SESSION TIMER ===" - Oturum kurulumunu görüntüleyin:
"Setting up workout session..." - Her egzersiz için şunu görüntüleyin:
"Exercise: [exercise_name] - Duration: [duration_object]" - Dinlenme süresini görüntüleyin:
"Rest period between exercises: [rest_duration_object]" - Oturum dökümünü hesaplayın ve görüntüleyin:
"=== SESSION BREAKDOWN ==="- Her egzersiz için:
"[exercise_name]: [duration_in_seconds] seconds" "Rest periods: [rest_duration_in_seconds] seconds each"
- Toplam oturum süresini hesaplayın (tüm egzersiz sürelerinin toplamı artı egzersizler arasındaki dinlenme süreleri):
"=== TIMING CALCULATIONS ===""Total exercise time: [total_exercise_duration_object]""Total rest time: [total_rest_duration_object]"(egzersizler arasındaki dinlenme süreleri, yani egzersiz sayısından bir eksik)"Complete session duration: [total_session_duration_object]"
- Oturum istatistiklerini görüntüleyin:
"=== 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"
- Zaman dönüşümlerini görüntüleyin:
"=== TIME CONVERSIONS ===""Session duration in minutes: [total_minutes]"(toplam oturum süresini dakikaya dönüştürün)"Session duration in hours: [total_hours]"(toplam oturum süresini saate dönüştürün, ondalık olarak gösterin)
- Tamamlanma mesajını görüntüleyin:
"Workout session timer configured successfully"
Sürelerle çalışmak için time paketini, giriş dizelerini bölmek için strings paketini, dize sayılarını tam sayılara dönüştürmek için strconv paketini ve formatlı çıktı için fmt paketini kullanın. time.Duration değerlerinin birbirine eklenebileceğini ve Seconds(), Minutes() ve Hours() gibi yöntemler kullanılarak farklı birimlere dönüştürülebileceğini unutmayın. Bu zorluk, zamanlama uygulamaları için süre değerlerinin nasıl oluşturulacağını ve manipüle edileceğini gösterir.
Kopya kağıdı
Go, iki an arasındaki zaman dilimlerini temsil etmek için time.Duration türünü sağlar.
Tam sayılarla çarpılan önceden tanımlanmış sabitleri kullanarak süreler oluşturun:
tenMinutes := 10 * time.Minute
twoHours := 2 * time.Hour
thirtySeconds := 30 * time.SecondYaygın süre sabitleri şunları içerir:
time.Nanosecondtime.Microsecondtime.Millisecondtime.Secondtime.Minutetime.Hour
Süre değerleri birbirine eklenebilir ve Seconds(), Minutes() ve Hours() gibi yöntemler kullanılarak farklı birimlere dönüştürülebilir.
Kendin dene
package main
import (
"fmt"
"strconv"
"strings"
"time"
)
func main() {
// Girdiyi oku
var exerciseInput string
var restInput string
fmt.Scanln(&exerciseInput)
fmt.Scanln(&restInput)
// Girdiden egzersizleri ayrıştır
exerciseEntries := strings.Split(exerciseInput, ",")
// Girdiden dinlenme süresini ayrıştır
restParts := strings.Split(restInput, ":")
// TODO: Kodunuzu aşağıya yazın
// 1. İsim, süre değeri ve birimi çıkarmak için her bir egzersiz girişini ayrıştırın
// 2. Süre değerlerini tam sayılara dönüştürün ve time.Duration nesneleri oluşturun
// 3. Dinlenme süresini ayrıştırın ve time.Duration nesnesi oluşturun
// 4. Antrenman seansı bilgilerini ve hesaplamaları görüntüleyin
// 5. Seans istatistiklerini ve zaman dönüşümlerini hesaplayın
// Yarışmada belirtilen tüm gerekli bilgileri çıktı olarak vermeyi unutmayın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve Davranışlar