En mi GOPATH tengo algo como esto:

/bin/
/pkg/
/src/
/src/my_prog/
/src/my_prog/main.go
/src/my_prog/d_interface.go
/src/my_prog/d_struct_that_implements_the_interface.go

En main.go he package main, en d_interface.go y d_struct_that_implements_the_interface.go he package my_prog.

Cuando intento go build my_prog me sale el siguiente error:

can't load package: package my_prog: found packages my_prog (d_interface.go) and main (main.go) in C:\dev\Code\Go\src\my_prog

¿Esto significa que cualquier archivo que pertenece a package main debe ir en su propia carpeta? Si es así, ¿cuál es la razón para esto?

InformationsquelleAutor TheTeaMan | 2013-01-19

3 Comentarios

  1. 55

    Sí, cada paquete debe ser definido en su propio directorio.

    La estructura de origen se define en Cómo Escribir Código Ir.

    Un paquete es un componente que se puede utilizar en más de un programa, que se pueden publicar, importación, obtener a partir de una URL, etc. Así que tiene sentido para tener su propio directorio tanto como un programa puede tener un directorio.

    • Sí, pero no el paquete principal calificar como un paquete independiente? A mi entender, el paquete principal es una peculiaridad del lenguaje que proporciona el punto de entrada (como en Java las clases que han estático público principal).
    • Sí, así es cómo funciona. En la práctica lo que he puesto en mi «main» paquete muy pocos código, sólo el que no puede ser utilizado en otros programas.
    • Eso es bastante molesto, para ser franco. Yo no veo una razón para separar el principal punto de entrada desde el resto del programa. Yo acepte esta respuesta.
    • Cuando yo hago un programa, a menudo tengo muchas pequeñas utilidades, utilizando los mismos datos/modelo/etc.. Es conveniente para romper todo en paquetes y tener todos los programas muy pequeños y el uso de los paquetes. Por CIERTO, usted puede esperar un poco antes de aceptar una respuesta, de modo que otros usuarios tendrían incentivo para darle otro (quizás la mejor) de las respuestas.
    • si el paquete es main es un programa. Si el paquete no es main es una biblioteca. Si usted los pone en el mismo camino y a instalar la ruta, que están tratando de instalar el programa o la biblioteca?
    • No estoy tratando de instalar nada todavía, acaba de construir el programa. El programa depende de ambos paquetes. Me enteré de que poner en el paquete principal en /src/my_prog/ y la my_prog paquete en /src/my_prog/my_prog/ obras.

  2. 13

    También, si todos los que están tratando de hacer es romper los principales.vaya a archivo en varios archivos, a continuación, sólo el nombre de los otros archivos «paquete principal» mientras que sólo define la función principal, en uno de los archivos, que son buenos para ir.

  3. 1

    Asegúrese de que el paquete está instalado en su $GOPATH directorio o ya dentro de su área de trabajo/paquete.

    Por ejemplo: si su $GOPATH = "c:\go", asegúrese de que el paquete dentro de C:\Go\src\pkgName

Dejar respuesta

Please enter your comment!
Please enter your name here