Nuestro team de expertos pasados varios días de investigación y de juntar de datos, hallamos la respuesta, queremos que todo este artículo sea de gran utilidad para tu proyecto.
Solución:
No, no hay una importación relativa en Go.
debe usar la ruta absoluta considerando GOPATH:
La variable de entorno GOPATH especifica la ubicación de su espacio de trabajo. Es probable que sea la única variable de entorno que deberá configurar al desarrollar el código de Go. Para comenzar, cree un directorio de espacio de trabajo y configure GOPATH en consecuencia. ver: https://golang.org/doc/code.html#GOPATH
Importar rutas
Una ruta de importación es un string que identifica de forma única un paquete. La ruta de importación de un paquete corresponde a su ubicación dentro de un espacio de trabajo o en un repositorio remoto (se explica a continuación).
Los paquetes de la biblioteca estándar reciben rutas de importación cortas como “fmt” y “net/http”. Para sus propios paquetes, debe elegir una ruta base que sea poco probable que colisione con futuras adiciones a la biblioteca estándar u otras bibliotecas externas.
Si mantiene su código en un repositorio fuente en algún lugar, entonces debe usar la raíz de ese repositorio fuente como su ruta base. Por ejemplo, si tiene una cuenta de GitHub en github.com/user, esa debería ser su ruta base.
Tenga en cuenta que no necesita publicar su código en un repositorio remoto antes de poder compilarlo. Es solo un buen hábito organizar su código como si fuera a publicarlo algún día. En la práctica, puede elegir cualquier nombre de ruta arbitrario, siempre que sea exclusivo de la biblioteca estándar y del gran ecosistema de Go.
Ejemplo:
Este ejemplo asume que usted ha establecido GOPATH=/goworkdir
en el entorno de su sistema operativo.
Expediente: goworkdir/src/project1/utils/auth.go
package utils
func Test1() string
return "Test1"
Expediente: goworkdir/src/project1/controllers/login.go
package controllers
import "project1/utils"
func Test2() string
return utils.Test1()
Expediente: goworkdir/src/project1/main.go
package main
import (
"fmt"
"project1/controllers"
)
func main()
fmt.Println(controllers.Test2())
ahora si tu go run main.go
deberías ver la salida:
Test1
Esto ahora es diferente desde la introducción de los módulos go, desde go 1.11.
Por lo tanto, si cambia a ir a los módulos, y si su módulo se llama “m”, entonces la forma idiomática de hacer importaciones relativas en su árbol de proyectos sería usar: import "m/utils"
y import "m/controllers"
en lugares donde necesita importar esos paquetes en su proyecto. Para obtener más información, consulte: https://github.com/golang/go/wiki/Modules#do-modules-work-with-relative-imports-like-import-subdir
Usuarios de GoLand – por defecto estas formas de importación aparecen como errores en el IDE. Debe habilitar la integración de Go Modules en la configuración
Aquí hay otra estructura de proyecto de ejemplo con el contenido del archivo requerido para importar correctamente:
test1/
utils/
texts.go
main.go
go.mod
con los siguientes contenidos:
go.mod
:
module mycompany.com/mytest
go 1.15
utils/texts.go
(para que una función sea visible desde un paquete diferente, debe comenzar con una letra mayúscula):
package utils
func GetText() string
return "hello world"
main.go
(solo se admite el nombre de importación completo, no hay acceso directo para importar desde el mismo módulo más fácilmente):
package main
import (
"fmt"
"mycompany.com/test1/utils"
)
func main()
fmt.Println(GetText())
Sección de Reseñas y Valoraciones
Nos puedes añadir valor a nuestro contenido contribuyendo tu veteranía en los informes.