"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 > ¿Cómo puedo inicializar eficientemente las matrices en GO, similar a la memoria de C ++?

¿Cómo puedo inicializar eficientemente las matrices en GO, similar a la memoria de C ++?

Publicado el 2025-02-06
Navegar:682

How Can I Efficiently Initialize Arrays in Go, Similar to C  's memset?

¿Hay un equivalente de memset en go?

en c, la función de memset permite la inicialización eficiente de las matrices con valores específicos. En Go, aunque no hay equivalente directo, varias técnicas pueden lograr resultados similares.

iteración de bucle

el enfoque más simple es usar un bucle para establecer cada elemento de una matriz al valor deseado.

func memsetLoop(a []int, v int) {
    for i := range a {
        a[i] = v
    }
}

repetido copy ()

aprovechando la función de copia altamente optimizada, podemos aprovechar un patrón de copia repetido para establecer eficientemente los valores de matriz.

func memsetRepeat(a []int, v int) {
    if len(a) == 0 {
        return
    }
    a[0] = v
    for bp := 1; bp  

Resultados de referencia

para evaluar el rendimiento de estas técnicas, los comparamos entre sí para diferentes tamaños de matriz.

var a = make([]int, 1000) // Size will vary

func BenchmarkLoop(b *testing.B) {
    for i := 0; i  

Los resultados muestran que memSetRepeat () superan a MemSetLoop () para matrices más grandes, demostrando su eficiencia para una inicialización rápida.

Ú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