>백엔드 개발 >Golang >Go 라이브러리와 CLI를 동일한 디렉터리에 묶을 수 있나요?

Go 라이브러리와 CLI를 동일한 디렉터리에 묶을 수 있나요?

Barbara Streisand
Barbara Streisand원래의
2024-12-02 20:09:15667검색

Can I Bundle a Go Library and CLI in the Same Directory?

라이브러리와 CLI를 동일한 디렉토리에 묶을 수 있습니까?

라이브러리(내보낸 기능) 및 명령줄 인터페이스(CLI 실행 가능)는 이것이 실용적인지 의문을 제기합니다. 문제는 go 컴파일러에 프로그램 실행을 위한 "main" 기능이 포함된 패키지와 해당 기능이 포함된 라이브러리가 모두 필요할 때 발생합니다.

문제: 다중 패키지

제공된 예에서 알 수 있듯이 "main"과 라이브러리 패키지가 모두 동일한 디렉토리에 공존하는 경우 go 컴파일러는 동일한 디렉토리에서 여러 패키지를 찾는 것에 대해 불평합니다. 디렉터리.

해결책: 중첩 패키지

동일한 디렉터리에 패키지를 유지 관리하는 대신 간단한 해결책은 상위 디렉터리 내에 새 하위 디렉터리를 만들어 보관하는 것입니다. 라이브러리 또는 CLI 패키지 중 하나입니다. 패키지의 새 위치를 반영하도록 가져오기를 업데이트하는 것을 잊지 마세요.

중첩 패키지의 예

아래 수정된 예에서 "a" 패키지는 "so-multipack" 디렉토리 내의 새로운 하위 디렉토리 "a":

so-multipack/
    a/
        a.go
    main.go

업데이트됨 main.go

package main

import "../so-multipack/a"

func main() {
    a.Hello()
}

a/a.go 업데이트

package a

import "fmt"

func Hello() {
    fmt.Println("hello from a")
}

성공적인 컴파일

업데이트된 디렉토리 구조를 사용하여 이제 go 명령이 실행됩니다. 성공적으로:

go run main.go
# Output: hello from a
go build
# Creates a "so-multipack" executable

동일한 상위 디렉터리 내에 패키지를 중첩함으로써 라이브러리와 CLI 실행 파일을 모두 성공적으로 수용할 수 있습니다.

위 내용은 Go 라이브러리와 CLI를 동일한 디렉터리에 묶을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.