El proyecto es muy interesante, pero necesita mas contexto y tal vez algún diagrama para entender exactamente qué está pasando
Introducción
Características esenciales de Go
Qué aprenderás y qué necesitas saber
Repaso general: variables, condicionales, slices y map
Repaso general: GoRoutines y apuntadores
Programación orientada a objetos
¿Es Go orientado a objetos?
Structs vs. clases
Métodos y funciones
Constructores
Herencia
Interfaces
Aplicando interfaces con Abstract Factory
Implementación final de Abstract Factory
Funciones anónimas
Funciones variadicas y retornos con nombre
Go Modules
Cómo utilizar los Go modules
Creando nuestro módulo
Testing
Testing
Code coverage
Profiling
Testing usando Mocks
Implementando Mocks
Concurrencia
Unbuffered channels y buffered channels
Waitgroup
Buffered channels como semáforos
Definiendo channels de lectura y escritura
Worker pools
Multiplexación con Select y Case
Proyecto: servidor con worker pools
Definiendo workers, jobs y dispatchers
Creando web server para procesar jobs
Conclusión
Continúa con el Curso de Go Avanzado
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 17
Preguntas 0
El proyecto es muy interesante, pero necesita mas contexto y tal vez algún diagrama para entender exactamente qué está pasando
Que gran curso, trabajo con Go, los test y POO son cosa de todos los dias, pero el modulo de concurrencia me impresiono y me mostro lo mucho que me falta.
Buen curso, mejoraría el apartado del proyecto, pero en general estuvo muy bien
En general creo que es buen curso, pero muchas veces no se entiende de manera sencilla que es lo que estamos solucionando me refiero a mayormente todo lo referente a concurrencia y canales, por lo menos yo que vengo desde nodejs a veces me pierdo …
Que buen curso!! Esto de la concurrencia me gusto mucho y mas como lo explico el profesor.
¡Gracias! Muy buen curso, yo creo que Go si es OO porque funciona igual que otros lenguajes OO pero se implementa de forma diferente. 🐹
Buen curso, y sobre si es un lenguaje o no orientado a objeto… Desde mi opinión creo que no lo es, puede simular ciertos aspectos pero seria todo.
NO me gusto la explicacion, el profesor escribia las lineas de codigo, pero no explicaba porque se hacian de esa manera tampoco daba ejemplos suficientemente claros. : (, : (
Excelente el curso, me aclaro muchas dudas que me habían quedado del curso básico de GO.
Muy buen curso, Go te da una amplia visión al momento de construir software…
Aprender sobre realizar tests en Go es excelente, me gustó mucho la forma de realizarlos, aunque espero que en los cursos de Go avanzado estén ejemplos de tests obteniendo datos de una base de datos, aunque está excelente la forma en que lo planteas, Néstor, de verdad, este es un curso totalmente recomendable
Me gusto el curso, quiza más desarrollo al final en el proyecto, pero en general aprendí mucho, le estoy agarrando cariño a GO y me gusto el proyecto final. Sin duda recomendado. La librería estandar viene potente y me doy cuenta que se puede explotar más las capacidades del sistema con este lenguaje que es compilado y que te permite aprovechar los recursos de manera relativamente fácil.
Buen Curso Nestor !
Dio una visión amplia del lenguaje y sus características propias que no comparten otros lenguajes. Me confundo un poco con la concurrencia y considero que con un diagrama puede ayudar a entender la idea principal o sugiriendo algo para practicar la concurrencia.
Lo de los test buenisimos!!
https://gist.github.com/solrac97gr/f08ec5e2cbb805a1ccb4b49e2b51ae2f
func TestGetOneRule(t *testing.T) {
tests := map[string]struct {
testSetup func(m *mocks.MockRuleRepository)
assertionSetup func(subtest *testing.T, r domain.Rule, e error)
}{
"Success get rule": {
testSetup: func(m *mocks.MockRuleRepository) {
m.
EXPECT().
Get(gomock.Any()).
Return(domain.Rule{
ID: "test",
}, nil)
},
assertionSetup: func(subtest *testing.T, r domain.Rule, e error) {
assert.NotNil(subtest, r, "")
assert.Nil(subtest, e, "")
},
},
"Error in the repository to get rule": {
testSetup: func(m *mocks.MockRuleRepository) {
m.
EXPECT().
Get(gomock.Any()).
Return(domain.Rule{}, errors.New("get rule bla bla"))
},
assertionSetup: func(subtest *testing.T, r domain.Rule, e error) {
assert.Equal(subtest, domain.Rule{}, r, "")
assert.NotNil(subtest, e, "")
assert.Contains(subtest, e.Error(), "get rule", "")
},
},
}
for name, test := range tests {
t.Run(name, func(subtest *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
ruleRepositoryMock := mocks.NewMockRuleRepository(ctrl)
clientRepositoryMock := mocks.NewMockClientRepository(ctrl)
if test.testSetup != nil {
test.testSetup(ruleRepositoryMock)
}
srv := rulessrv.New(ruleRepositoryMock, clientRepositoryMock)
rule, err := srv.Get("")
if test.assertionSetup != nil {
test.assertionSetup(subtest, rule, err)
}
})
}
}
Excelente curso, gracias por una explicación clara y concisa. En mi opinión, Go puede comportarse parcialmente como un lenguaje OO, pero estructuralmente no lo considero OO.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?