goproject/hello/extra
goproject/hello 폴더를 생성하고 hello 폴더 아래 여러 .go 파일을 생성했다면, 모두 같은 hello 패키지에 포함된다. 만약 goproject/hello 아래 extra 폴더를 만들고, extra 폴더 아래 또 .go 파일들을 생성하면 hello와 extra 폴더는 같은 폴더가 아니기 때문에 extra 아래 있는 .go 파일들은 hellp 패키지가 아닌 extra 패키지에 포함된다.
go mod init goproject/hello
모듈은 go mod init
명령으로 실행된다. 뒤에 모듈 이름을 적어주면 된다. 여기는 폴더명과 같은 goproject/hello를 넣어준다. go.mod 파일이 생성된다. go.mod 파일에는 모듈명과 Go 버전, 필요한 패키지 목록 정보가 담겨 있다.
go build 명령은 Go 코드를 기계어로 변환하여 실행파일을 만든다. 터미널에서 go tool dist list 명령을 실행하면 가능한 운영체제와 아키텍처 목록을 볼 수 있다.
예를 들어amd64 계열 칩셋을 사용하는 리눅스 실행 파일을 만들때는 아래와 같이 옵션을 주면 된다.
GOOS=linux GOARCH=amd64 go build
package main
import "fmt"
func main() {
// Hello Go World 출력
fmt.Println("Hello Go World")
}
패키지 선언은 이 코드가 어떤 패키지에 속하는지 알려준다. 패키지는 코드 묶음이고 여러 기능을 제공한다. Go언어는 모든 코드가 반드시 패키지 선언으로 시작해야 한다. 위 코드는 main 패키지에 속한 것을 컴파일러에게 알려줍니다. main 패키지는 프로그램 시작점을 포함하는 특별한 패키지이다. main()함수가 없는 패키지는 패키지 이름으로 main을 쓸 수 없다. main() 함수가 없기 때문에 실행파일을 만들 수는 없고, 다른 패키지에서 외부 패키지로 사용된다.