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
테이블 프로젝트로 만듭니다.
라이브러리가 내부 용인 경우 다음과 같이 갈 수 있습니다.
- 라이브러리 파일이있는 디렉토리를 프로젝트의 디렉토리 아래에 두십시오.
- 나머지 프로젝트에서 프로젝트가 포함 된 작업 공간의 루트에 상대적인 경로를 사용하여 라이브러리를 참조하십시오.
시연하려면 :
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"
...
답변
나는 경험 많은 프로그래머이지만 Go world에 대한 새로운 경험이 있습니다! Go를 이해하는 데 어려움이 거의 없다고 고백합니다. 하위 폴더에 go 파일을 구성하려고 할 때도 같은 문제에 직면했습니다. 내가 한 방식 :
GO_Directory ($ 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
File MyProject \ Entities \ Fiboo \ Client.go에서
package Fiboo
type Client struct{
ID int
name string
}
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
}
(우분투 16.04에서 Go 1.9를 실행 중입니다)
그리고 너희들을 기억해, 나는 이동에 초보자입니다. 내가하고있는 일이 나쁜 습관이라면 알려주세요!
답변
다른 해결책 : $ GOPATH에
추가하십시오 src/myproject
.
그런 다음 import "mylib"
컴파일합니다.