Array[T]
Array[T]
Sección titulada «Array[T]»PyGo proporciona soporte de primera clase para tipos de arreglo genéricos usando la sintaxis Array[T]. Los arreglos son type-safe en tiempo de compilación y se transpilan mecánicamente a slices de Go y listas de Python de forma idiomática.
Uso Básico
Sección titulada «Uso Básico»model Team: name: String members: Array[String] # Arreglo de cadenas scores: Array[Int] # Arreglo de enterosArreglos Anidados
Sección titulada «Arreglos Anidados»model Matrix: data: Array[Array[Float]] # Matriz 2D de flotantesArreglos de Modelos
Sección titulada «Arreglos de Modelos»model User: name: String tags: Array[String]
model Project: title: String users: Array[User] # Arreglo de instancias de modeloSeguridad de Tipos
Sección titulada «Seguridad de Tipos»Los arreglos se validan en tiempo de compilación:
team = Team(name="Alpha", members=["Alice", "Bob"])
# Válido — todos los elementos son Stringteam.members = ["Alice", "Bob", "Charlie"]
# Inválido — el transpiler rechaza esto (Int no es String)# team.members = ["Alice", 42]Código Generado
Sección titulada «Código Generado»Go:
type Team struct { Name string Members []string Scores []int}Python:
class Team(BaseModel): name: str members: list[str] scores: list[int]Representación en Base de Datos
Sección titulada «Representación en Base de Datos»Los arreglos se almacenan en la base de datos según el motor:
- SQLite: Codificado en JSON como
TEXT
-- SQLite (codificado en JSON)CREATE TABLE team ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, members TEXT, -- JSON: ["Alice", "Bob", "Charlie"] scores TEXT -- JSON: [10, 20, 30]);Operaciones con Arreglos
Sección titulada «Operaciones con Arreglos»PyGo proporciona un conjunto de operaciones que funcionan con arreglos tanto en Go como en Python:
Agregar (Append)
Sección titulada «Agregar (Append)»team.members.append("David")Extender (Extend)
Sección titulada «Extender (Extend)»team.members.extend(["Eve", "Frank"])Filtrar (en handler)
Sección titulada «Filtrar (en handler)»handler listActiveUsers: list(team_id: UUID) -> Array[User]: team = Team.find(team_id) return team.members.filter(active=True)Longitud (Length)
Sección titulada «Longitud (Length)»count = len(team.members)Arreglos Nulos
Sección titulada «Arreglos Nulos»Usa Array[T]? para arreglos nulos:
model Team: name: String members: Array[String]? = None # Puede ser NULLMejores Prácticas
Sección titulada «Mejores Prácticas»- Usa
Array[String]para colecciones de cadenas homogéneas - Usa
Array[Model]para referencias embebidas a modelos - Evita arreglos de arreglos para mejor compatibilidad con la base de datos
- Usa
Array[String]?para arreglos opcionales (pueden ser NULL)