이번 편의 목표: 연체료 함수를 다른 패키지로 옮기고, 밖으로 공개할 이름만 대문자로 둡니다.

모듈 이름은 01편의 go.mod 첫 줄에 있습니다. module library 이면 하위 폴더 book의 가져오기 경로는 library/book 입니다. 패키지 밖에서는 대문자로 시작하는 이름만 보입니다.

book/fee.go를 새로 만듭니다.

Go
package book

func OverdueFee(days int) int {
	if days <= 0 {
		return 0
	}
	return days * 100
}

main.go는 다음만 둡니다.

Go
package main

import (
	"fmt"

	"library/book"
)

func main() {
	fmt.Println(book.OverdueFee(3))
}

go run .

출력은 300입니다. 표준 라이브러리 import와 자기 모듈 import 사이에는 빈 줄을 둡니다. 함수 이름을 overdueFee처럼 소문자로 바꾸면 main에서 부를 수 없습니다. 계산은 book 패키지에 두고, 출력은 main에 둡니다.

직접 해 보기

book.OverdueFee(4)로 바꿔 출력이 400인지 확인하세요.

해설

4일은 0보다 크므로 4 * 100입니다. 패키지 이름과 대문자 함수 이름은 그대로 둡니다.