
Database/SQL
Domina el acceso a bases de datos SQL en Go con el paquete database/sql: conexiones, consultas, transacciones, prepared statements y gestión del pool de conexiones.
1¿Cuál es la diferencia principal entre DB.Query y DB.Exec?
¿Cuál es la diferencia principal entre DB.Query y DB.Exec?
Respuesta
DB.Query se usa para ejecutar consultas SELECT que devuelven filas de datos, mientras que DB.Exec sirve para ejecutar comandos SQL que no devuelven resultados (INSERT, UPDATE, DELETE). Query devuelve un objeto Rows que debe iterarse y cerrarse con rows.Close(), mientras que Exec devuelve un Result que contiene el número de filas afectadas y el último ID insertado.
2¿Por qué es importante cerrar el objeto Rows después de una consulta?
¿Por qué es importante cerrar el objeto Rows después de una consulta?
Respuesta
Cerrar Rows con rows.Close() libera los recursos de la conexión database, permitiendo que la conexión vuelva al pool. Sin cerrarla, las conexiones permanecen ocupadas y el pool puede agotarse, provocando bloqueos. Se recomienda usar defer rows.Close() inmediatamente después de comprobar el error de Query para garantizar el cierre incluso si ocurre un error posterior.
3¿Qué método debe usarse para recuperar una sola fila de resultados?
¿Qué método debe usarse para recuperar una sola fila de resultados?
Respuesta
DB.QueryRow está diseñado específicamente para recuperar una sola fila y devuelve un objeto Row (en singular). A diferencia de Query, que devuelve Rows y requiere iteración con rows.Next(), QueryRow simplifica el código al permitir un scan directo. El manejo de errores ocurre durante el Scan, donde sql.ErrNoRows indica que no se encontró ninguna fila.
¿Cómo abrir una conexión a una base de datos con database/sql?
¿Qué devuelve el método rows.Scan()?
+19 preguntas de entrevista
Otros temas de entrevista Go
Fundamentos de Go
Estructuras de datos en Go
Interfaces en Go
Manejo de errores
Goroutines básicas
Channels
Go Modules
Servidor HTTP
Cliente HTTP
Codificación JSON
Paquete context
Testing
Patrones de concurrencia
Primitivas de sincronización
Frameworks web de Go
Diseño de API REST
gRPC
Reflection
Gestión de memoria
Optimización del rendimiento
Generics
Go Design Patterns
Microservices
Seguridad y autenticación
Docker & Containerization
Kubernetes Basics
Go Avanzado
Desarrollo de CLI
Domina Go para tu próxima entrevista
Accede a todas las preguntas, flashcards, tests técnicos, ejercicios de code review y simuladores de entrevista.
Empieza gratis