2010-02-02 8 views
13

Mi árbol de archivos de origen es la siguiente:Para usar el paquete correctamente, ¿cómo organizar el directorio, el nombre del archivo, el archivo de prueba de la unidad?

/src 
    /pkg 
    /foo 
     foo.go 
     foo_test.go 

Dentro foo.go:

package foo 

func bar(n int) { 
    ... 
} 

dentro foo_test.go:

package foo 

func testBar(t *testing.T) { 
    bar(10) 
    ... 
} 

Mis preguntas son:

  1. ¿El nombre del paquete rel ates al nombre del directorio, nombre del archivo fuente?
  2. Si solo hay un archivo fuente para un paquete, ¿necesito ponerlo en un directorio?
  3. ¿Debo incluir foo.go y foo_test.go en el mismo paquete?
  4. En el foo_test.go, ya que está en el mismo paquete que foo.go, no importé foo. Pero cuando compilo foo_test.go con 6g, dice que bar() no está definido. ¿Que debería hacer?

Respuesta

8

1 - La especificación de la lengua dice lo siguiente:

Un conjunto de archivos que comparten el mismo PackageName forman la implementación de un paquete. Una implementación puede requerir que todos los archivos fuente de un paquete habitan en el mismo directorio.

Parece que no hay ningún requisito sobre el nombre de archivos/directorios, pero sería más seguro poner todo el archivo que forma un paquete en un directorio.

2 - Obviamente, el archivo debe estar en algún directorio. Supongo que quiere decir "¿Debería ponerlo en un subdirectorio de src?" En base a la cita anterior, me parece que podría tener todos sus archivos en src directamente si realmente quisiera.

3 - Sí.

4 - Use go test

Cuestiones relacionadas