Para que funcione tour reemplazar:
go get golang.org/x/tour
Por:
go get golang.org/x/website/tour
Hola mundo en Go
Introducción al Curso de Golang
¿Qué es, por qué y quienes utilizan Go?
Instalar Go en Linux
Instalar Go en Mac
Instalar Go en Windows
Nuestras primeras líneas de código con Go
Variables, funciones y documentación
Variables, constantes y zero values
Operadores aritméticos
Tipos de datos primitivos
Paquete fmt: algo más que imprimir en consola
Uso de funciones
Go doc: La forma de ver documentación
Estructuras de control de flujo y condicionales
El poder de los ciclos en Golang: for, for while y for forever
Operadores lógicos y de comparación
El condicional if
Múltiple condiciones anidadas con Switch
El uso de los keywords defer, break y continue
Estructuras de datos básicas
Arrays y Slices
Recorrido de Slices con Range
Llave valor con Maps
Structs: La forma de hacer clases en Go
Modificadores de acceso en funciones y Structs
Métodos e interfaces
Structs y Punteros
Stringers: personalizar el output de Structs
Interfaces y listas de interfaces
Concurrencia y Channels
¿Qué es la concurrencia?
Primer contacto con las Goroutines
Channels: La forma de organizar las goroutines
Range, Close y Select en channels
Manejo de paquetes y Go Modules
Go get: El manejador de paquetes
Go modules: Ir más allá del GoPath con Echo
Modificando módulos con Go
Despedida del curso
Despedida
Bonus
Cheat Sheet Go
Librerías para desarrollo web con Go
Data Science con Go
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Convierte tus certificados en títulos universitarios en USA
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Osmandi Gómez
Aportes 47
Preguntas 10
Para que funcione tour reemplazar:
go get golang.org/x/tour
Por:
go get golang.org/x/website/tour
En go 1.18 si estamos fuera del directorio de go.mod
tenemos que hacer la instalación con go install
Si intentamos ejecutar el comando que nos muestra el video nos saldrá este output
go: go.mod file not found in current directory or any parent directory.
'go get' is no longer supported outside a module.
To build and install a command, use 'go install' with a version,
like 'go install example.com/cmd@latest'
For more information, see https://golang.org/doc/go-get-install-deprecation
or run 'go help get' or 'go help install'.
Entonces, lo que debemos hacer es:
go install -v golang.org/x/website/tour@latest
Para los que no encuentren el código fuente del paquete, en mi caso estaba en:
~/go/pkg/mod/golang.org/x
Esta es la nueva forma de instalar tour
<go install golang.org/x/website/tour@latest>
Por fin pude!
Tips para los que estan batallando:
Paquetes locales extra:
Como apunte adicional, he leído entre la comunidad que GO no fue pensado para manejar muchos paquetes para evitar lo que pasa con otros lenguajes como JavaScript, ya que el mayor fuerte de GO es más evidente cuando se usa el lenguaje en su estado más puro.
Para los que no les da es con el comando
go install golang.org/x/website/tour
tour -H
tour
Explore los proyectos que se pueden hacer en go con videojuegos y el Pong que tiene el proyecto de OAK es muy similar a trabajar con el canvas de js o de python.
Le cambie el color a las barras de los jugadores para que sientan mas personalizados y el score lo puse mas grande, porque estaba en miniatura.
La verdad este curso no esta del todo bien elaborado, sinceramente no me ha gusto mucho, sin desmeritar ni desacreditar el instructor, solo me parece que puede tener una estructura mas formal y rica en contenido, siento que esto lo podria encontrar en youtube gratuito, solo es un comentario, tomenlo como una critica constructiva.
Cuando intentaba introducir este comando en la consola:
go install -v golang.org/x/website/tour@latest
me salía este error😣:
go: modules disabled by GO111MODULE=off; see 'go help modules'
lo que hice fue introducir este comando:
export GO111MODULE=on
y luego ya pude descargarlo con el mismo comando😎:
go install -v golang.org/x/website/tour@latest
Pagkage “ECHO”:
go get -u github.com/labstack/echo/...
package main
import (
"net/http"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Route => handler
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!\n")
})
// Start server
e.Logger.Fatal(e.Start(":1323"))
}
RESULTADO:
Este es mi pequeño aporte mis notas sobre las go rutines, estaré tratando de resumir más cosas sobre el contenido de este curso a veces es algo confuso, o redundante pero extremadamente valioso!
Las go Rutines y los chanels son algo muy útil para nosotros así que bueno ojalá con esto puedan entender mejor!
Esta muy bueno la sección de IoT, me gustaría explorar ésta: https://github.com/tibcosoftware/flogo
A partir de la version 1.17 go get ya no instala los paquetes, y su comportamiento default es go get -d, pueden indgar mas sobre el tema aqui https://github.com/golang/go/issues/43684
GO GET ESTA DEPRECADO!!!
go: go.mod file not found in current directory or any parent directory.
'go get' is no longer supported outside a module.
To build and install a command, use 'go install' with a version,
like 'go install example.com/cmd@latest'
For more information, see https://golang.org/doc/go-get-install-deprecation
prueben con el siguiente comando
go install -v golang.org/x/website/tour@latest
Ademas mis archivos terminaron aqui despues de esa instalacion
~/go/pkg/mod/golang.org/x/website/tour@v0.0.0-20210616181959-e0d934b43647
Alguien podria explicarme el por que de ese cambio? gracias
El comando go get ya no es soportado. Ahora se usa go install. Por el momento no he encontrado un flag que sustituya a -u para reinstalar todo el paquete.
para la version 1.18.3 el comando get no funciona pero go dice que usemos go install, y también cambio la dirección del repositorio este fue el comando que ami me funciono
go install golang.org/x/website/tour@lates
Un framework que me encanta para desarrollar APIs es Fiber, te da un boost de performance a tu proyecto ya que usa fasthttp
en lugar del por defecto net/http
que ya tiene GO
Para instalarlo solo ocupas escribir en tu terminal:
go get github.com/gofiber/fiber/v2
Y el hello world es:
package main
import "github.com/gofiber/fiber/v2"
func main() {
app := fiber.New()
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, World!")
})
app.Listen(":3000")
}
Si vienes del mundo de node.js, usando Express
o Fastify
pueden observar la sintaxis es muy similar pero mejor, por que estamos usango GO jaja.
Me gustó mucho Gin para desarrollo web
CONSOLA:
[hmedina1@MANJARO practices]$ ./echoServer
____ __
/ __/___/ / ___
/ _// __/ _ \/ _ \
/___/\__/_//_/\___/ v3.3.10-dev
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
O\
⇨ http server started on [::]:1323
RESULTADO:
Para los usuarios de Ubuntu 20 se instala con estas líneas de código:
export GO111MODULE=on
go install -v golang.org/x/website/tour@latest
Para ejecutarlo nos dirijimos a la carpeta bin y ejecutamos la siguiente línea de código:
cd bin
./tour
Con esto logré ejecutar la librería.
He usado Echo, y me parece una muy buena opción para sacar el mayor rendimiento, es super rápido, aun así he querido aprender a usar Gin, se dice que es uno de los más usados, muchos lo prefieren. Aquí dejo el ejemplo de cómo sería el Hola mundo en Gin.
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/saludo", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"message": "Hola Mundo!",
})
})
r.Run()
}
Desearía también aprender machine learning con Go.
Utilizé gron para correr process cada cierto tiempo e investigue como dejar corriendo go que fue la ultimas líneas que agregue
package main
import (
"fmt"
"os"
"os/signal"
"time"
"github.com/roylee0704/gron"
)
func main() {
c := gron.New()
c.AddFunc(gron.Every(1*time.Second), func() {
fmt.Println("runs every second.")
})
c.Start()
// Dejar corriendo go hasta cancelarlo con ctrl + c
sig := make(chan os.Signal)
signal.Notify(sig, os.Interrupt, os.Kill)
<-sig
}
Aguante gin gonic vieja no me importa nada ❤️ Muchisimas gracias por este pedazo de curso jeje
mkdir myapp && cd myapp
$ go mod init myapp
$ go get github.com/labstack/echo/v4
//Crear server.go
package main
import (
"net/http"
"github.com/labstack/echo/v4"
)
func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
e.Logger.Fatal(e.Start(":1323"))
}
Go permite la intalacion de paquetes, por ejemplo el tour de go
go get golang.org/x/website/tour
y se ejecuta en local con el comando tour
lo que nos abre en el navegador el tour de go.
Por otro lado.
En la pagina awesome-go
encontraremos un monton de paquetes que podemos usar segun la necesidad que tengamos.
por ejemplo echo
que es un framework Web y nos lleva a su pagina oficial
echo
Creamos un archivo por ejemplo echo.go
package main
import (
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
"net/http"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Routes
e.GET("/", hello)
// Start server
e.Logger.Fatal(e.Start(":1323"))
}
// Handler
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
Al ejecutar go run echo.go
nos arroja
____ __
/ __/___/ / ___
/ _// __/ _ \/ _ \
/___/\__/_//_/\___/ v3.3.10-dev
High performance, minimalist Go web framework
https://echo.labstack.com
____________________________________O/_______
O\
⇨ http server started on [::]:1323
Al ingresar en el navegador en localhost:1323
veremos el Hello, World!
Para el reto, decidi optar por Gorilla mux, el router del framework Gorilla
package main
import (
"fmt"
"net/http"
"github.com/gorilla/mux"
)
func homePage(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello world")
}
func main() {
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/", homePage)
http.ListenAndServe(":8088", router)
}
Me interesa mucho este driver de mongo
package main
import (
"net/http"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
)
func main() {
// Echo instance
e := echo.New()
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
// Routes
e.GET("/", hello)
// Start server
e.Logger.Fatal(e.Start(":1323"))
}
// Handler
func hello(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
}
Hello world con el Framework web Fiber
package main
import "github.com/gofiber/fiber/v2"
func main() {
app := fiber.New()
app.Get("/", func(c *fiber.Ctx) error {
return c.SendString("Hello, World 👋!")
})
app.Listen(":3000")
}
El reto de la clase, lo subí a https://github.com/w00k/gin-hello-world
gracias
Joe Bot
https://joe-bot.net/
Puedes crear bots para diferentes plataformas
Éste bot Responde “PONG” cuando
recibe el mensaje “ping”
package main
import "github.com/go-joe/joe"
func main() {
b := joe.New("example-bot")
b.Respond("ping", Pong)
err := b.Run()
if err != nil {
b.Logger.Fatal(err.Error())
}
}
func Pong(msg joe.Message) error {
msg.Respond("PONG")
return nil
}
En el caso de JavaScript es NPM
Mi hello world de echo.
Corrijo
go get -v -u golang.org/x/tour
got get -v -u golang.org/x/tour
Interesante
Para ejecutar en linux
./tour
Me gustó el framework de desarrollo web Gin
yo desde linux mint pude acceder desde go/bin
go$ find . -name "tour"
./bin/tour
./pkg/mod/cache/download/golang.org/x/tour
./pkg/mod/cache/download/golang.org/x/website/tour
./pkg/mod/golang.org/x/[email protected]/tour
go$ cd bin/
bin$ ./tour
2021/08/14 00:49:14 Serving content from ~/go/pkg/mod/golang.org/x/website/tour@v0.0.0-20210616181959-e0d934b43647
2021/08/14 00:49:14 A browser window should open. If not, please visit http://127.0.0.1:3999
2021/08/14 00:49:15 accepting connection from: 127.0.0.1:45264
Si quieres actualizar un paquete que ya fue instalado en tu proyecto:
go get -u packageName
Para actualizar todos los paquetes de tu proyecto, puedes ejecutar:
go get -u ./...
Como trabajo en un disco que no es el c, no me deja instalar ahí, abrí una terminal de windows y ejecute el código y pude descargar el codigo.
Genial:
go get example
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?