es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema al desarrollar un workspace de varios módulos en Go.

Mi estructura de carpetas se parece a esto… (digamos que el nombre de mi repositorio git es demorepo)

demorepo
|--directory1
   |-- (no hay go.mod en este nivel)
   |--module1
      |--package1 --------->--------------->--------------------->----|
      |--go.mod (github.com/demorepo/directory1/module1)              |
      |--go.sum                                                       |
   |--module2                                                         |
   |--module3                                                         |
|--directory2                                                         |
  |-- (no hay go.mod en este nivel)                                       |
  |--newmodule ------<------------<------------------<----------------|

Ahora, quiero usar una función definida en “package1” en mi “newmodule”.

Cuando escribo
go get <dirección del repo>/directort1/module1/package1 en “newmodule”
muestra ….

github.com/<repo>@upgrade found (v0.0.0-20211215055943-92e412ad4a12), but does not contain package github.com/<repo>/directory1/module1/package1
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para usar una función definida en “paquete1” en el directorio “newmodule”, puedes seguir los siguientes pasos:

    1. Asegúrate de haber ejecutado “go mod init” en los directorios “directory1/module1” y “directory2/newmodule” para inicializarlos como módulos y tener un archivo go.mod.
    2. En el archivo “go.mod” del directorio “newmodule”, agrega la siguiente línea para importar “paquete1”:

    require <repo_address>/directory1/module1 v0.0.0-00010101000000-000000000000
    

    Aquí, “” se refiere a la dirección de tu repositorio que contiene las carpetas “directory1” y “directory2”.

    El número de versión “v0.0.0-00010101000000-000000000000” representa la versión del paquete “module1” que deseas utilizar. Puedes reemplazar esto con el número de versión real del módulo, que se puede encontrar en su archivo “go.mod”. Si no especificas la versión, Go intentará utilizar la última versión disponible en el repositorio, lo cual podría causar errores.

    1. Después de agregar la línea al archivo “go.mod”, ejecuta “go get” en el directorio “newmodule” para descargar e instalar el paquete “module1”:
    go get <repo_address>/directory1/module1
    

    Esto debería descargar el paquete y sus dependencias y actualizar los archivos “go.mod” y “go.sum”.

    1. Ahora puedes importar y utilizar las funciones de “paquete1” en tu código de “newmodule”, de la siguiente manera:
    import "<repo_address>/directory1/module1/paquete1"
    
    func main() {
      // Llama a las funciones de paquete1 aquí
    }
    

    Ten en cuenta que es posible que necesites utilizar la ruta de importación completa de “paquete1” si no se encuentra en el mismo directorio que el archivo de importación.

    Además, asegúrate de comprometer los cambios que realizaste en los archivos “go.mod” y “go.sum” en ambos directorios para control de versiones. Esto garantizará que otros desarrolladores puedan reproducir la configuración de tu módulo y sus dependencias.

Comments are closed.