Desde la introducción de go.mod , creo que la administración de paquetes tanto locales como externos se vuelve más fácil. Usando go.mod , también es posible tener un proyecto fuera de GOPATH.
Importar paquete local:
Cree una carpeta demoproject y ejecute el siguiente comando para generar el archivo go.mod
go mod init demoproject
Tengo una estructura de proyecto como la siguiente dentro del directorio demoproject .
├── go.mod
└── src
├── main.go
└── model
└── model.go
Para fines de demostración, inserte el siguiente código en el archivo model.go .
package model
type Employee struct {
Id int32
FirstName string
LastName string
BadgeNumber int32
}
En main.go , importé el modelo de empleado haciendo referencia a "demoproject / src / model"
package main
import (
"demoproject/src/model"
"fmt"
)
func main() {
fmt.Printf("Main Function")
var employee = model.Employee{
Id: 1,
FirstName: "First name",
LastName: "Last Name",
BadgeNumber: 1000,
}
fmt.Printf(employee.FirstName)
}
Importar dependencia externa:
Simplemente ejecute el go get
comando dentro del directorio del proyecto.
Por ejemplo:
go get -u google.golang.org/grpc
Debe incluir la dependencia del módulo en el archivo go.mod
module demoproject
go 1.13
require (
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa // indirect
golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9 // indirect
golang.org/x/text v0.3.2 // indirect
google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150 // indirect
google.golang.org/grpc v1.26.0 // indirect
)
https://blog.golang.org/using-go-modules
.go
archivos en un solo directorio son parte del mismo paquete, y no necesitaimport
archivos en el mismo paquete (es decir, el mismo directorio). Usted mencionó trabajar fuera de GOPATH, que es una de las capacidades del nuevo sistema de módulos Go. Este respuesta cubiertas módulo de estructura, la importación de paquetes locales, la organización de los paquetes dentro de un módulo, si desea o no tener múltiples módulos en un solo repositorio, etc.git/repo/to/my/project
ruta completa ? Simplemente no veo la razón por la que alguien querría este comportamiento. ¿Qué sucede si mueve su proyecto a otra ubicación (es decir, imagen de Docker), necesita alterar todas las rutas nuevamente? Estoy buscando respuestas por qué esto es tan complicado.