¿Qué hace realmente `go build`? Entendiendo `go build` vs `go install`
¡Hola a todos! Acabo de empezar a aprender Go y estoy tratando de entender cómo compilar proyectos correctamente. Leí un montón de artículos, pero todavía me confundo con los comandos `go build` y `go install`.
Tengo un proyecto simple con un package main en la raíz. Cuando ejecuto `go build` en la carpeta del proyecto, crea un binario justo ahí (uso Go 1.20 en Windows). Pero si ejecuto `go install`, no veo ningún binario en la carpeta del proyecto, pero en `%GOPATH%/bin` aparece mi archivo ejecutable.
¿Cuál es la diferencia? ¿Para qué necesito `go install` si `go build` ya crea el binario? He oído que `go build` también verifica las dependencias, y que `go install` las instala. ¿O no es así?
Mi código de ejemplo:
```go
package main
import "fmt"
func main() {
fmt.Println("Hello, Go!")
}
```
Ejecuto `go build` y obtengo `hello.exe` en la carpeta actual (en Linux solo `hello`). Luego ejecuto `go install` — el binario desaparece de la carpeta del proyecto, pero aparece en `C:\Users\Me\go\bin\hello.exe`.
Explíquenme,