Importar archivos desde el mismo paquete

199 views
Skip to first unread message

Mario Santos

unread,
Nov 11, 2016, 6:45:32 PM11/11/16
to golang-spanish
Hola chicos resulta que tengo un archivo x y ese archivo quiero importarlo en el main que esta en el mismo paquete y no puedo... 
Hago

import "./name"
y me sale. pdt(el algorimo funciona perfectamente si hago una func main dentro de ese archivo) osea que funciona el codigo solo es la importación... gracias a todos

Zorion

unread,
Nov 13, 2016, 10:34:04 AM11/13/16
to golang-...@googlegroups.com
Hola Mario,

Hace tiempo que no me dedico a programar en Go así que quizás pase por alto cosas que te servirían mejor pero aún así me gustaría ayudarte.

Creo que el problema que tienes es importando paquetes.
Cuando pretendes importar algo suele ser un package.
Es posible que ya lo definas bien pero no está de más repetirlo.
Cuando defines el objeto a importar debes escribir 
package <nombredelpaquete> 
y no package main.

Si lo haces así luego puedes escribir en el código en que quieras usar el paquete el 
import "<pathhastaelpaquete>/<nombredelpaquete>".

Ten en cuenta que si programas en un repositorio es bastante interesante hacer que el pathhastaelpaquete sea el del repositorio.
Por ejemplo, import "github.com/usuario/paquete"

Luego para usar la Funcion de tu paquete en tu main puedes usar paquete.Funcion

Creo que en un mismo directorio no puedes poner más de un paquete así que asegúrate de no juntar tu main con otro paquete.

Espero haber sido de ayuda. Te copio debajo un ejemplo:
Son tres códigos. Se ejecuta el package main (test/test_hello.go)
El package main llama a dos otros packages, world y hello

Fíjate que el package hello está en src/github.com/usuario/hello, esto es lo que decía que te puede ser útil si lo vas a publicar en un repositorio.
También te valdría para un repositorio privado, si lo descargas a tu disco en el directorio correspondiente.
Por otro lado world está en src/world, te puede ser útil localmente algo así pero no olvides que debe colgar de GOPATH o GOROOT.
Fíjate que el nombre del archivo que tiene el código no importa.


~/src$ go run test/test_hello.go 
Hello World

package hello

import (
"fmt"
)

func PrintHello(name string) {
fmt.Println("Hello", name)
}

~/src$ cat world/un_nombre.go 
package world

func World() string {
return "World"
}

~/src$ cat test/test_hello.go 
package main

import (
"world"
)

func main() {
hello.PrintHello(world.World())
}

~/src$ 


Saludos,
Zorion


--

---
Has recibido este mensaje porque estás suscrito al grupo "golang-spanish" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a golang-spanish+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Roberto Costumero Moreno

unread,
Nov 14, 2016, 5:46:32 AM11/14/16
to golang-...@googlegroups.com
Hola,

Por el error veo que no tienes definido el $GOPATH. Tienes que definir la variable de entorno GOPATH con el directorio donde tienes los proyectos de Go que no son propiamente del lenguaje.

Un saludo,

Reply all
Reply to author
Forward
0 new messages