¿Cómo usar paquetes personalizados en golang?

Estoy intentando crear y usar un paquete personalizado en Go. Probablemente sea algo muy obvio, pero no puedo encontrar mucha información sobre esto. Básicamente, tengo estos dos archivos en la misma carpeta:

mylib.go

package mylib type SomeType struct { } 

main.go

 package main import ( "mylib" ) func main() { } 

Cuando trato de go run main.go , obtengo este error:

 main.go:4:2: import "mylib": cannot find package 

Intenté ejecutar go build mylib.go primero, pero no parece estar haciendo nada (no se generó ningún archivo, no hay ningún mensaje de error). Entonces, ¿alguna idea de cómo podría hacer esto?

Primero, asegúrese de leer y comprender el documento “Cómo escribir el código Go” .

La respuesta real depende de la naturaleza de su “paquete personalizado”.

Si está destinado a ser de uso general, considere utilizar el llamado “diseño de código Github” . Básicamente, haces de tu biblioteca un proyecto separado de go get -table.

Si su biblioteca es para uso interno, podría ir así:

  1. Coloque el directorio con los archivos de la biblioteca en el directorio de su proyecto.
  2. En el rest de su proyecto, consulte la biblioteca usando su ruta relativa a la raíz de su espacio de trabajo que contiene el proyecto.

Demostrar:

 src/ myproject/ mylib/ mylib.go ... main.go 

Ahora, en main.go nivel main.go , podría import "myproject/mylib" y funcionaría import "myproject/mylib" .

Para este tipo de estructura de carpetas:

 main.go mylib/ mylib.go 

La forma más simple es usar esto:

 import ( "./mylib" ) 

otra solución:
agregue src/myproject a $ GOPATH.

Luego import "mylib" comstackrá.

Para un proyecto alojado en GitHub, esto es lo que la gente suele hacer:

 github.com/ laike9m/ myproject/ mylib/ mylib.go ... main.go 

mylib.go

 package mylib ... 

main.go

 import "github.com/laike9m/myproject/mylib" ... 

Soy un progtwigdor experimentado, pero, ¡bastante nuevo en Go world! Y confieso que he tenido pocas dificultades para entender Go … Me enfrenté al mismo problema al tratar de organizar mis archivos go en las subcarpetas. La forma en que resuelvo fue:

GO_Directory (el asignado a $ GOPATH)

 GO_Directory //the one assigned to $GOPATH __MyProject _____ main.go _____ Entites _____ Fiboo // in my case, fiboo is a database name _________ Client.go // in my case, Client is a table name 

En el archivo MyProject \ Entities \ Fiboo \ Client.go

 package Fiboo type Client struct{ ID int name string } 

en el archivo MyProject \ main.go

 package main import( Fiboo "./Entity/Fiboo" ) var TableClient Fiboo.Client func main(){ TableClient.ID = 1 TableClient.name = 'Hugo' // do your shit here } 

(Estoy ejecutando Go 1.9 en Ubuntu 16.04)

Y recuerda chicos, soy novato en Go. Si lo que estoy haciendo es una mala práctica, ¡házmelo saber!

paquete lexico

 type Analizador struct { } func main() { } 

En la clase package main

 import ( "github.com/user/lexico )