"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué GO's `time.sleep ()` manejar las duraciones fraccionales de manera diferente basada en el tipo constante?

¿Por qué GO's `time.sleep ()` manejar las duraciones fraccionales de manera diferente basada en el tipo constante?

Publicado el 2025-03-23
Navegar:435

Why Does Go's `time.Sleep()` Handle Fractional Durations Differently Based on Constant Type?

fracción de tiempo duración de sueño en go

pregunta:

¿por qué el siguiente código vaya a dormir con éxito durante una fracción de duración, mientras que el segundo fallas? S: = Tiempo. Hour / 73.0 fmt.println ("durmiendo:", s) tiempo. Duerme (s) // Falla D: = 73.0 s: = tiempo. hora / D fmt.println ("durmiendo:", s) tiempo. Duerme (s) // Error: Operación no válida: Time.Hour / D (TISE MISMACHED TIME.Duration y Float64)

// Success
s := time.Hour / 73.0
fmt.Println("sleeping: ", s)
time.Sleep(s)

// Failure
d := 73.0
s := time.Hour / d
fmt.Println("sleeping: ", s)
time.Sleep(s)

// Error: invalid operation: time.Hour / d (mismatched types time.Duration and float64)
Respuesta:

La diferencia se encuentra en el tipo de Divisor en cada línea:

[&]

exitoso:
    73. constante, que se adapta a Time.duration en la expresión Time.Hour / 73.0.
  • fausion:
  • d se escribe explícitamente como float64, que no puede dividirse por tiempo.duration.
  • para hacer que la segunda línea funcione, debe convertirse en tiempo. Time.hour / Time.Duration (d) o use una de las siguientes formas alternativas:

d: = Time.duration (73.0)

s := time.Hour / time.Duration(d)

[&] para valores que no se pueden representar en el tiempo. debe convertirse en float64:

    d: = 73.5 s: = Time.Duration (float64 (time.hour) / d)
  • más consideraciones:

d := 73.5
s := time.Duration(float64(time.Hour) / d)
constantes como tiempo. tipos.

Untyped Constants:

constantes sin typed toman el tipo de contexto en el que se usan. tipos.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3