Estou tentando criar e usar um pacote personalizado no Go. Provavelmente é algo muito óbvio, mas não consigo encontrar muita informação sobre isso. Basicamente, eu tenho esses dois arquivos na mesma pasta:
mylib.go
package mylib
type SomeType struct {
}
main.go
package main
import (
"mylib"
)
func main() {
}
Quando tento go run main.go
, recebo este erro:
main.go:4:2: import "mylib": cannot find package
Eu tentei executar go build mylib.go
primeiro, mas parece não estar fazendo nada (nenhum arquivo gerado, nenhuma mensagem de erro). Alguma idéia de como eu poderia fazer isso?
go install
no diretóriomylib
first e tente novamente.Respostas:
Primeiro, certifique-se de ler e entender o documento "Como escrever o código Go" .
A resposta real depende da natureza do seu "pacote personalizado".
Se for para uso geral, considere empregar o chamado "layout de código do Github" . Basicamente, você transforma sua biblioteca em um
go get
projeto de tabela separado .Se sua biblioteca é para uso interno, você pode ir assim:
Para demonstrar:
Agora, no nível superior
main.go
, você poderiaimport "myproject/mylib"
e funcionaria bem.fonte
mylib
no códigomyproject2
? Então a resposta é "usandoimport "myproject/mylib"
- a idéia é que o GoGOPATH
procure caminhos importados em cada diretório extraído da variável de ambiente (eles são chamados de" espaços de trabalho "), mas essa pesquisa (felizmente) não é recursiva, portanto , esses caminhos são efetivamente "ancorado" em suas respectivas áreas de trabalho.go mod
desenvolvimentos recentes , um módulo pode ser a resposta (e tambémgo mod
suporta o fornecimento de módulos).Para este tipo de estrutura de pastas:
A maneira mais simples é usar isso:
fonte
foo/mylib
(assumindo que a pasta que contém main.go sejafoo
).go install
pausa. Se você estiver construindo um projeto independente no qual deseja que as pessoasgo build
baixem e executem , tudo bem - no entanto, eu empregaria o "layout de código do Github" mencionado acima (mesmo se estiver fora do bitbucket ou similar), se você quisergo install
suporte completo .Para um projeto hospedado no GitHub, veja o que as pessoas costumam fazer:
mylib.go
main.go
fonte
Sou um programador experiente, mas bastante novo no mundo Go! E confesso que enfrentei algumas dificuldades para entender o Go ... Eu enfrentei esse mesmo problema ao tentar organizar meus arquivos go em subpastas. Do jeito que eu fiz:
GO_Directory (aquele atribuído a $ GOPATH)
No arquivo MyProject \ Entities \ Fiboo \ Client.go
no arquivo MyProject \ main.go
(Estou executando o Go 1.9 no Ubuntu 16.04)
E lembre-se pessoal, eu sou novato em Go. Se o que estou fazendo for uma má prática, me avise!
fonte
outra solução:
adicione
src/myproject
a $ GOPATH.Então
import "mylib"
irá compilar.fonte