Introducción a Go
## Objetivos de Aprendizaje
- Comprender la historia y filosofía de diseño de Go
- Configurar el entorno de desarrollo de Go
- Escribir y ejecutar tu primer programa en Go
- Comprender los fundamentos de la sintaxis de Go
## ¿Qué es Go?
Go es un lenguaje de programación tipado estáticamente y compilado desarrollado por los ingenieros de Google Robert Griesemer, Rob Pike y Ken Thompson.
```go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
```
## ¿Por qué Go?
### Características Clave
- **Compilación rápida** - Go compila directamente a código máquina
- **Soporte simultáneo** - Soporte de concurrencia mediante goroutines
- **Seguridad** - Seguridad de memoria con recolección de basura
- **Sintaxis limpia** - Minimalista y fácil de leer
- **Tipado estático** - Detecta errores en tiempo de compilación
- **Biblioteca estándar** - Rica biblioteca estándar incluida
### Filosofía de Diseño
| Principio | Descripción |
|-----------|-------------|
| Simplicidad | Palabras clave mínimas, sin características complejas |
| Legibilidad | El código debe ser fácil de leer y entender |
| Productividad | Tiempos de compilación rápidos, herramientas sencillas |
## Instalando Go
### Descarga
Obtén Go desde
### Verificar Instalación
```bash
go version
```
### Entorno
```bash
go env GOPATH
go env GOROOT
```
## Tu Primer Programa
### Archivo: main.go
```go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
```
### Ejecutar
```bash
go run main.go
```
### Compilar
```bash
go build -o hello main.go
./hello
```
## Estructura de un Programa en Go
```go
package main // Declaración del paquete
import "fmt" // Importaciones
func main() { // Función principal (punto de entrada)
// Sentencias
}
```
### Componentes
1. **Paquete**: Grupo de archivos fuente relacionados
2. **Import**: Incluye otros paquetes
3. **Función**: Bloques de código reutilizables
4. **Función main**: Punto de entrada de programas ejecutables
## Paquetes
### Paquete Main
Los programas ejecutables deben usar `package main`.
```go
package main
```
### Otros Paquetes
```go
import "fmt" // E/S formateada
import "math" // Funciones matemáticas
import "strings" // Utilidades de cadenas
```
### Importaciones Múltiples
```go
import (
"fmt"
"math"
"strings"
)
```
## Paquete fmt
### Imprimir
```go
fmt.Println("Hello") // Imprimir con nueva línea
fmt.Print("Hello") // Imprimir sin nueva línea
fmt.Printf("Name: %s\n", "Go") // Impresión formateada
```
### Println vs Print vs Printf
```go
fmt.Println("Hello", "World") // Hello World
fmt.Print("Hello", "World") // HelloWorld
fmt.Printf("%.2f", 3.14159) // 3.14
```
### Verbos de Formato
| Verbo | Descripción |
|-------|-------------|
| `%v` | Formato predeterminado |
| `%T` | Tipo del valor |
| `%d` | Entero |
| `%f` | Flotante |
| `%s` | Cadena |
| `%t` | Booleano |
| `%p` | Puntero |
## Comentarios
```go
// Comentario de una línea
/*
* Comentario de múltiples líneas
*/
// TODO: Agregar más código
// FIXME: Arreglar este error
```
## Argumentos de Línea de Comandos
```go
package main
import (
"fmt"
"os"
)
func main() {
args := os.Args
for i, arg := range args {
fmt.Printf("Arg %d: %s\n", i, arg)
}
}
```
```bash
go run main.go arg1 arg2 arg3
```
## Variables
### Declaración
```go
var name string = "Go"
var version = 1.20 // Inferencia de tipo
name := "Golang" // Declaración corta (dentro de funciones)
```
## Tipos de Datos Básicos
```go
bool // true o false
string // "Hello"
int // Entero (dependiente de la plataforma)
int8 // -128 a 127
int32 // -2.1B a 2.1B
float64 // Flotante de 64 bits
byte // Alias para uint8
rune // Alias para int32 (punto de código Unicode)
```
## Convenciones de Nomenclatura
- Usa camelCase para nombres de variables y funciones
- Usa PascalCase para nombres exportados
- Mantén los nombres cortos pero significativos
```go
var userName string // camelCase
var UserName string // PascalCase (exportado)
const MaxRetries = 3 // PascalCase (constante)
```
## IDEs y Editores
### Editores Populares
- VS Code con extensión Go (recomendado)
- GoLand (JetBrains)
- Vim/Neovim con vim-go
- Sublime Text con GoSublime
### Configuración de VS Code
1. Instalar VS Code
2. Instalar extensión Go
3. Instalar herramientas de Go: `cmd+shift+p` → "Go: Install/Update Tools"
## Versiones de Go
```bash
go version # Verificar versión instalada
```
| Versión | Año | Característica |
|---------|------|---------|
| Go 1.0 | 2012 | Lanzamiento inicial |
| Go 1.5 | 2015 | Compilador auto-hospedado |
| Go 1.11 | 2018 | Módulos |
| Go 1.18 | 2022 | Genéricos |
| Go 1.21 | 2023 | Herramientas mejoradas |
## Resumen
- Go es un lenguaje compilado y tipado estáticamente diseñado por Google
- Cada programa ejecutable necesita `package main`
- `go run` ejecuta programas Go directamente
- `go build` crea binarios ejecutables
- El paquete `fmt` proporciona E/S formateada
- Los comentarios usan `//` para una línea y `/* */` para múltiples líneas
- Go prioriza la simplicidad, legibilidad y compilación rápida
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →