IT story

Golang에서 사용자 정의 패키지를 사용하는 방법은 무엇입니까?

hot-time 2020. 5. 29. 23:42
반응형

Golang에서 사용자 정의 패키지를 사용하는 방법은 무엇입니까?


Go에서 사용자 정의 패키지를 만들고 사용하려고합니다. 아마도 매우 분명한 것이지만 이것에 대한 많은 정보를 찾을 수 없습니다. 기본적 으로이 두 파일은 동일한 폴더에 있습니다.

mylib.go

package mylib

type SomeType struct {

}

main.go

package main

import (
    "mylib"
)

func main() {

}

시도 go run main.go하면이 오류가 발생합니다.

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

go build mylib.go먼저 실행하려고했지만 아무것도하지 않는 것 같습니다 (파일 생성, 오류 메시지 없음). 내가 어떻게 이것을 할 수 있을지 아십니까?


먼저 "Go 코드 작성 방법" 문서 를 읽고 이해하십시오 .

실제 답변은 "사용자 정의 패키지"의 특성에 따라 다릅니다.

일반적인 용도로 사용하려면 소위 "Github 코드 레이아웃"을 사용하십시오 . 기본적으로 라이브러리를 별도의 go get테이블 프로젝트로 만듭니다.

라이브러리가 내부 용인 경우 다음과 같이 갈 수 있습니다.

  1. 라이브러리 파일이있는 디렉토리를 프로젝트의 디렉토리 아래에 두십시오.
  2. 나머지 프로젝트에서 프로젝트가 포함 된 작업 공간의 루트에 상대적인 경로를 사용하여 라이브러리를 참조하십시오.

시연하려면 :

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

이제 최상위 레벨 main.go에서 할 수 import "myproject/mylib"있으며 정상적으로 작동합니다.


이런 종류의 폴더 구조의 경우 :

main.go
mylib/
  mylib.go

가장 간단한 방법은 이것을 사용하는 것입니다.

import (
    "./mylib"
)

GitHub에서 호스팅되는 프로젝트의 경우 사람들이 일반적으로 수행하는 작업은 다음과 같습니다.

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

mylib.go

package mylib

...

main.go

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

...

I am an experienced programmer, but, quite new into Go world ! And I confess I've faced few difficulties to understand Go... I faced this same problem when trying to organize my go files in sub-folders. The way I did it :

GO_Directory ( the one assigned to $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

On File MyProject\Entities\Fiboo\Client.go

package Fiboo

type Client struct{
    ID int
    name string
}

on file 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
}

( I am running Go 1.9 on Ubuntu 16.04 )

And remember guys, I am newbie on Go. If what I am doing is bad practice, let me know !


another solution:
add src/myproject to $GOPATH.

Then import "mylib" will compile.

참고URL : https://stackoverflow.com/questions/15049903/how-to-use-custom-packages-in-golang

반응형