Para usar el paquete correctamente, ¿cómo organizar el directorio, el nombre del archivo, el archivo de prueba de la unidad?

Mi árbol de archivos fuente es así:

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

Dentro de foo.go:

package foo

func bar(n int) {
    ...
}

dentro de foo_test.go:

package foo

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

Mis preguntas son:

¿El nombre del paquete se relaciona con el nombre del directorio, el nombre del archivo fuente?Si solo hay un archivo fuente para un paquete, ¿debo ponerlo en un directorio?¿Debo poner foo.go y foo_test.go en el mismo paquete?En foo_test.go, como 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. ¿Qué tengo que hacer?

Respuestas a la pregunta(1)

Su respuesta a la pregunta