go lang의 다른 파일에서 함수를 호출하고 싶습니다.
test1.go
package main
func main() {
demo()
}
test2.go
package main
import "fmt"
func main() {
}
func demo() {
fmt.Println("HI")
}
어떻게 호출 demo
에 test2
에서 test1
?
답변:
main
패키지에 둘 이상을 포함 할 수 없습니다 .
더 일반적으로 패키지에 주어진 이름을 가진 함수를 두 개 이상 가질 수 없습니다.
main
in을 제거하고 test2.go
응용 프로그램을 컴파일하십시오. 이 demo
기능은에서 볼 수 있습니다 test1.go
.
main
test2.go에서 제거한 후 빌드하고 실행할 수 있지만 go run test1.go
여전히 사용하여 test1.go를 실행하지 못했습니다 . 왜 ?
go run test1.go test2.go
Go Lang은 기본적으로 언급 된 파일 만 빌드 / 실행합니다. 모든 파일을 링크하려면 실행하는 동안 모든 파일의 이름을 지정해야합니다.
아래 두 명령 중 하나를 실행하십시오.
$go run test1.go test2.go. //order of file doesn't matter
$go run *.go
빌드하려면 비슷한 작업을 수행해야합니다.
나는 똑같은 것을 찾고 있었다. " test1에서 test2의 demo를 호출하는 방법 "이라는 질문에 대답하려면 다음과 같이하십시오 . 이 코드를 go run test1.go
명령으로 실행하십시오 . current_folder 를 test1.go가있는 폴더 로 변경합니다 .
test1.go
package main
import (
L "./lib"
)
func main() {
L.Demo()
}
lib \ test2.go
test2.go 파일을 하위 폴더에 넣기 lib
package lib
import "fmt"
// This func must be Exported, Capitalized, and comment added.
func Demo() {
fmt.Println("HI")
}
package lib; expected main
방금 실행 go run test1.go
하고 해당 파일에 동일한 패키지 내 다른 파일의 함수에 대한 참조가있는 경우 Go에 전체 패키지를 실행하라고 지시하지 않았으므로 해당 파일 하나만 실행하도록 지시했기 때문에 오류가 발생합니다.
여러 가지 방법으로 명령 된 실행에서 파일을 패키지로 그룹화하여 go가 전체 패키지로 실행되도록 할 수 있습니다. 다음은 몇 가지 예입니다 (터미널이 패키지의 디렉토리에있는 경우).
go run ./
또는
go run test1.go test2.go
또는
go run *.go
빌드 명령을 사용하여 동일한 동작을 기대할 수 있으며 생성 된 실행 파일을 실행 한 후에는 파일이 서로 기능 등에 대해 알고있는 그룹화 된 패키지로 실행됩니다. 예 :
go build ./
또는
go build test1.go test2.go
또는
go build *.go
그런 다음 명령 줄에서 실행 파일을 호출하기 만하면 모든 파일을 전체 패키지로 함께 실행할 때 실행 명령을 사용하는 것과 유사한 출력이 제공됩니다. 전의:
./test1
또는 실행 파일이 생성 될 때 호출되는 파일 이름이 무엇이든 상관 없습니다.
go fmt
입니까? 터미널에서 또는 뭐? 그가 어떤 것에 대해 관심이 있다는 것을 어떻게 보여줄까요?