Programming

다른 파일에 golang "undefined"함수가 선언되어 있습니까?

procodes 2020. 8. 5. 21:29
반응형

다른 파일에 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에서 동일한 문제가 발생하여 해결책을 찾았습니다. 당신은을 변경할 필요가 Run kind에서 FilePackage또는 Directory. Run/Edit구성으로 이동하면 드롭 다운에서이를 선택할 수 있습니다 .

package ~/go/src/a_package의 경우 Package pathis a_packageDirectoryis ~/go/src/a_package입니다. 원하는 것을 선택할 수 있습니다 Run kind.


을 사용하는 경우을 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 파일에서 함수를 호출 할 수 있습니다.


소스 폴더가 / go / src / blog로 구조화 된 경우 (소스 폴더의 이름이 블로그라고 가정)

  1. cd / go / src / blog ... (패키지가있는 폴더 안에있는 CD)
  2. 설치하러 가다
  3. 블로그

That should run all of your files at the same time, instead of you having to list the files manually or "bashing" a method on the command line.


I ran into the same issue with Go11, just wanted to share how I did solve it for helping others just in case they run into the same issue.

I had my Go project outside $GOPATH, so I had to turned on GO111MODULE=on without this option turned on, it will give you this issue; even if you you try to build or test the whole package or directory it won't be solved without GO111MODULE=on

참고URL : https://stackoverflow.com/questions/28153203/golang-undefined-function-declared-in-another-file

반응형