[go] 다른 파일에 golang “undefined”함수가 선언되어 있습니까?

다른 파일에서 함수를 호출하는 기본 go 프로그램을 작성하려고하지만 동일한 패키지의 일부입니다. 그러나 다음을 반환합니다.

undefined: NewEmployee

소스 코드는 다음과 같습니다.

main.go:

package main

func main() {
emp := NewEmployee()
}

employee.go:

package main

type Employee struct {
    name string
    age int
}

func NewEmployee() *Employee {
    p := &Employee{}
    return p
}

func PrintEmployee (p *Employee)  {
    return "Hello world!"
}



답변

“Go 코드 작성 방법”을 읽으십시오 .

사용하지 마십시오 /src당신에 GOPATH. 패키지는에 있습니다 $GOPATH/src.

위해 build또는 install당신은 패키지 디렉토리에 파일이 필요합니다.

의 경우 go run모든 파일을 인수로 제공해야합니다.

go run main.go employee.go

그러나 거의 항상을 사용해야합니다 go install(또는 비 주 패키지로 작업 할 때 혼란 go buildgo build유발하기 때문에 전자를 사용하는 것이 좋습니다 )


답변

GoLand (Go의 Intellij IDEA)에서 동일한 문제가 발생하여 해결책을 찾았습니다. 당신은을 변경할 필요가 Run kind에서 FilePackage또는 Directory. Run/Edit구성으로 이동하면 드롭 다운에서이를 선택할 수 있습니다 .

예를 들면 : 패키지 ~/go/src/a_package, 용도 Package patha_package과을 Directory~/go/src/a_packageRun kindPackage또는 Directory.


답변

를 사용하는 경우을 go run수행하십시오 go run *.go. 현재 작업 디렉토리에서 모든 go 파일을 자동으로 찾아 컴파일하고 주 기능을 실행합니다.


답변

다음 중 하나를 시도 할 수 있습니다.

방법 01 : 프로젝트 이름이MyProject

  • 경로로 이동하여 입력 go build하고 Enter 키를 누르십시오.
  • 프로젝트 이름 ( “MyProject”)으로 실행 파일을 생성합니다.
  • 그런 다음 터미널 유형에서 ./MyProjectEnter 키를 누릅니다

을 입력하여 두 단계를 동시에 수행 할 수 있습니다 go build && ./MyProject. 모든 go파일로 프로젝트를 올바르게 실행합니다 .

방법 02

그냥 입력 go run *.go하고 Enter 키를 누르십시오. 이것은 모든 을 실행 합니다 go files.

이것이 누군가에게 도움이되기를 바랍니다.


답변

다른 go 파일에서 함수를 호출하고 Goland를 사용하는 경우 실행 메뉴에서 ‘구성 편집’옵션을 찾아 실행 유형을 파일에서 디렉토리로 변경하십시오. 모든 오류를 지우고 다른 go 파일에서 함수를 호출 할 수 있습니다.


답변

나는 같은 문제에 부딪 쳤고 Go11다른 사람들 이 같은 문제에 부딪 칠 경우를 돕기 위해 어떻게 해결했는지 공유하고 싶었습니다.

나는 Go 프로젝트를 외부 $GOPATH 에 가지고 있었 으므로이 GO111MODULE=on옵션을 켜지 않고 켜야했습니다.이 문제가 발생합니다. 당신이 전체를 구축하거나 테스트하려고 package하거나 directory그것이 없으면 해결되지 않을지라도GO111MODULE=on


답변

go 코드 작성 방법을 따르지 않는 경우 go 모듈 을 사용해야 합니다.

go 모듈을 사용하면 $ GOPATH / src에 코드를 넣을 필요가 없습니다. 다른 곳에서도 살 수 있습니다.

코드를 / employee와 같은 다른 디렉토리로 옮길 수 있습니다. 직원 디렉토리 아래에서 go 모듈을 초기화하십시오.

go mod init example.com/employee