Cada módulo o clase debe tener una única responsabilidad o motivo para cambiar. En Go, esto se traduce en mantener las funciones y métodos enfocados en una tarea específica.
Ejemplo:
package main
import "fmt"
{ | |
"color_scheme": "Adaptify Dark.sublime-color-scheme", | |
"ignored_packages": ["Vintage"], | |
"theme": "Adaptive.sublime-theme", | |
"font_size": 13, | |
"font_face": "JetBrains Mono", | |
"index_files": false, | |
"word_wrap": true, | |
"highlight_line": false, | |
"line_padding_bottom": 0, |
package tset | |
import ( | |
"context" | |
"fmt" | |
"html/template" | |
"io" | |
"io/fs" | |
"net/http" | |
"path/filepath" |
{ | |
"editor.minimap.enabled": false, | |
"editor.fontLigatures": true, | |
"editor.fontFamily": "JetBrains Mono", | |
"editor.codeActionsOnSave": { | |
"source.organizeImports": "never" | |
}, | |
"editor.rendering.largeFileOptimizations": true, | |
"workbench.startupEditor": "none", | |
"terminal.external.linuxExec": "gnome-terminal", |
{ | |
"gopls.env": {"GOMODCACHE":"/home/{user}/go/pkg/mod"} | |
} |
package http | |
import ( | |
"context" | |
"log" | |
"net/http" | |
"time" | |
) | |
func JsonMiddleware(next http.Handler) http.Handler { |
Aunque Go no es un lenguaje de programación orientado a objetos (OOP) en el sentido tradicional (como Java o C++), proporciona formas idiomáticas de manejar conceptos comunes de OOP como encapsulación, herencia y polimorfismo. Esta es una guía básica para aplicar principios de OOP en Go de manera idiomática:
En Go, la encapsulación se logra utilizando la visibilidad basada en el caso de la primera letra. Los identificadores que comienzan con una letra mayúscula son exportados (públicos), mientras que los que comienzan con una letra minúscula son no exportados (privados).
Ejemplo:
package main
package expenses | |
import ( | |
"fmt" | |
) | |
// Record represents an expense record. | |
type Record struct { | |
Day int | |
Amount float64 |
package main | |
import ( | |
"fmt" | |
"os" | |
"path/filepath" | |
) | |
func main() { | |
path, _ := os.Getwd() |