ti-enxame.com

Como usar pacotes personalizados em golang?

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 não parece estar fazendo nada (nenhum arquivo gerado, nenhuma mensagem de erro). Então, alguma ideia de como eu poderia fazer isso?

155
this.lau_

Primeiro, certifique-se de ler e entender o documento "Como escrever código Go" .

A resposta real depende da natureza do seu "pacote personalizado".

Se ele for de uso geral, considere o uso do chamado "layout de código do Github" . Basicamente, você torna sua biblioteca um projeto go get-table separado.

Se a sua biblioteca é para uso interno, você poderia ir assim:

  1. Coloque o diretório com arquivos de biblioteca no diretório do seu projeto.
  2. No restante do seu projeto, consulte a biblioteca usando seu caminho relativo à raiz de sua área de trabalho que contém o projeto.

Para demonstrar:

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

Agora, no main.go de nível superior, você poderia import "myproject/mylib" e funcionaria bem.

149
kostix

Para este tipo de estrutura de pastas:

main.go
mylib/
  mylib.go

A maneira mais simples é usar isto:

import (
    "./mylib"
)
52
this.lau_

Para um projeto hospedado no GitHub, veja o que as pessoas geralmente fazem:

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

mylib.go

package mylib

...

main.go

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

...
6
laike9m

outra solução:
adicione src/myproject a $ GOPATH.

Então import "mylib" irá compilar.

3
Helin Wang

Eu sou um programador experiente, mas bastante novo no mundo Go! E confesso que enfrentei poucas dificuldades para entender o Go ... . Enfrentei esse mesmo problema ao tentar organizar meus arquivos em sub-pastas. Do jeito que eu fiz:

GO_Directory (aquele atribuído 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

No arquivo MyProject\Entities\Fiboo\Client.go

package Fiboo

type Client struct{
    ID int
    name string
}

no arquivo MyProject\main.go

package main

import(
    Fiboo "./Entity/Fiboo" 
)

var TableClient  Fiboo.Client

func main(){
    TableClient.ID = 1
    TableClient.name = 'Hugo'

    // do your things here
}

(Estou executando o Go 1.9 no Ubuntu 16.04) 

E lembre-se caras, eu sou novato em ir. Se o que estou fazendo é uma má prática, me avise!

2
Diego Favero

pacote lexico

type Analizador struct {

}

func main() {

}

En la clase Pacote principal

import (

    "github.com/user/lexico
)
0
Hexagendedor