Go
El comando go
Buscar..
Introducción
El comando go
es un programa de línea de comandos que permite la administración del desarrollo de Go. Permite la creación, ejecución y prueba de código, así como una variedad de otras tareas relacionadas con Go.
Corre
go run
ejecutará un programa sin crear un archivo ejecutable. Sobre todo útil para el desarrollo. run
solo ejecutará paquetes cuyo nombre de paquete sea main .
Para demostrarlo, usaremos un ejemplo simple de Hello World main.go
:
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
Ejecutar sin compilar en un archivo:
go run main.go
Salida:
Hello, World!
Ejecutar varios archivos en el paquete
Si el paquete es principal y se divide en varios archivos, uno debe incluir los otros archivos en el comando de run
:
go run main.go assets.go
Ir a construir
go build
compilará un programa en un archivo ejecutable.
Para demostrarlo, usaremos un ejemplo simple de Hello World main.go:
package main
import fmt
func main() {
fmt.Println("Hello, World!")
}
Compila el programa:
go build main.go
build
crea un programa ejecutable, en este caso: main
o main.exe
. A continuación, puede ejecutar este archivo para ver la salida Hello, World!
. También puede copiarlo en un sistema similar que no tenga instalado Go, hacerlo ejecutable y ejecutarlo allí.
Especifique el sistema operativo o la arquitectura en la construcción:
Puede especificar qué sistema o arquitectura construirá modificando el env
antes de build
:
env GOOS=linux go build main.go # builds for Linux
env GOARCH=arm go build main.go # builds for ARM architecture
Construir múltiples archivos
Si su paquete se divide en varios archivos y el nombre del paquete es main (es decir, no es un paquete importable ), debe especificar todos los archivos para compilar:
go build main.go assets.go # outputs an executable: main
Construyendo un paquete
Para construir un paquete llamado main
, simplemente puede usar:
go build . # outputs an executable with name as the name of enclosing folder
Ir limpio
go clean
limpiará todos los archivos temporales creados al invocar go build
en un programa. También limpiará los archivos sobrantes de Makefiles.
Ir fmt
go fmt
formateará el código fuente de un programa de una manera ordenada e idiomática que sea fácil de leer y entender. Se recomienda utilizar go fmt
en cualquier fuente antes de enviarlo para que el público lo vea o se comprometa con un sistema de control de versiones, para facilitar la lectura.
Para formatear un archivo:
go fmt main.go
O todos los archivos en un directorio:
go fmt myProject
También puede usar gofmt -s
( no go fmt
) para intentar simplificar cualquier código que pueda.
gofmt
( no go fmt
) también se puede usar para refactorizar el código. Entiende a Go, por lo que es más poderoso que usar una simple búsqueda y reemplazo. Por ejemplo, dado este programa ( main.go
):
package main
type Example struct {
Name string
}
func (e *Example) Original(name string) {
e.Name = name
}
func main() {
e := &Example{"Hello"}
e.Original("Goodbye")
}
Puede reemplazar el método Original
con Refactor
con gofmt
:
gofmt -r 'Original -> Refactor' -d main.go
Lo que producirá el diff:
-func (e *Example) Original(name string) {
+func (e *Example) Refactor(name string) {
e.Name = name
}
func main() {
e := &Example{"Hello"}
- e.Original("Goodbye")
+ e.Refactor("Goodbye")
}
Ir a buscar
go get
descarga los paquetes nombrados por las rutas de importación, junto con sus dependencias. A continuación, instala los paquetes nombrados, como 'instalar'. Get también acepta banderas de compilación para controlar la instalación.
ve a github.com/maknahar/phonecountry
Al retirar un nuevo paquete, get crea el directorio de destino $GOPATH/src/<import-path>
. Si el GOPATH contiene varias entradas, get usa la primera. Del mismo modo, instalará binarios compilados en $GOPATH/bin
.
Al retirar o actualizar un paquete, busque una rama o etiqueta que coincida con la versión instalada localmente de Go. La regla más importante es que si la instalación local está ejecutando la versión "go1", obtenga búsquedas de una rama o etiqueta llamada "go1". Si no existe tal versión, recupera la versión más reciente del paquete.
Cuando se utiliza go get
, el indicador -d
hace que se descargue pero no se instala el paquete dado. La bandera -u
le permitirá actualizar el paquete y sus dependencias.
Nunca obtenga verificaciones o actualizaciones de códigos almacenados en directorios de proveedores.
Ve env
go env [var ...]
imprime go información del entorno.
Por defecto imprime toda la información.
$go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/vikashkv/work"
GORACE=""
GOROOT="/usr/local/Cellar/go/1.7.4_1/libexec"
GOTOOLDIR="/usr/local/Cellar/go/1.7.4_1/libexec/pkg/tool/darwin_amd64"
CC="clang"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/xf/t3j24fjd2b7bv8c9gdr_0mj80000gn/T/go-build785167995=/tmp/go-build -gno-record-gcc-switches -fno-common"
CXX="clang++"
CGO_ENABLED="1"
Si uno o más nombres de variables se dan como argumentos, imprime el valor de cada variable nombrada en su propia línea.
$go env GOOS GOPATH
darwin
/Users/vikashkv/work