init함수, main함수 관련 - golang
init 함수는 패키지 초기화 작업을 위해 사용됩니다.
- init 함수는 패키지가 처음 로드될 때 자동으로 호출됩니다.
- init 함수는, main함수보다 아래에 있던, 위에 있던, 먼저 실행됩니다.
- init함수는 가독성을 위해서, 관례상, 예의상 main함수보다 위에 배치합니다.
- 명시적으로 호출할 수 없습니다.(자동호출됨. 개발자가 직접 호출은 못함)
- 패키지 내 init 함수는 파일 상단에서 아래로, 왼쪽에서 오른쪽 순서로 실행됩니다.
- 패키지 의존 관계에 따라 import된 순서대로 실행됩니다.
- 너무 많은 init 함수는 코드 가독성을 떨어뜨릴 수 있고, init함수는 단순 초기화 작업만 담당.
- init 함수는 자동 실행되므로, 예상치 못한 동작을 디버깅하기 어려울 수 있습니다.
init 함수는 함수처럼 선언하지만, 파라미터나 반환값이 없습니다.
- 하나의 파일에 init 함수를 여러 개 정의할 수 있습니다.
- 같은 패키지 내의 파일에 각각 init 함수를 정의할 수도 있습니다.
의존성 처리: 패키지가 의존하는 리소스 또는 설정을 준비.
main 함수는 프로그램의 시작점으로, 실행 로직을 포함합니다.
- main 함수는 Go 프로그램의 시작점이자 핵심 실행부입니다.
- Go 런타임은 프로그램 실행 시 main 패키지의 main 함수를 찾아 실행합니다.
- main 함수는 프로그램 실행의 시작점입니다. 1개만 있어야 함.
- main 함수는 프로그램 실행의 시작점입니다.
- main 함수는 프로그램 실행의 시작점입니다.
- 프로그램의 진입점 입니다.
- Go 프로그램은 반드시 하나의 main 패키지를 가져야 하며, main 패키지의 main 함수가 실행됩니다.
- main 함수는 프로그램 실행 시 호출되는 첫 번째 함수입니다(단, init 함수가 먼저 실행된 뒤 호출).
- 필수 함수 입니다.
- main 함수는 프로그램 실행을 위해 반드시 정의해야 합니다.
- 정의하지 않으면 컴파일 오류가 발생합니다.
- main 함수는 반드시 main 패키지에만 존재할 수 있습니다.
- 다른 패키지에서는 main 함수 이름을 사용할 수 없습니다.
- 다른 패키지를 호출하거나 사용하는 작업을 수행합니다.
- 전체 프로그램의 실행 흐름을 제어합니다.
- main 함수가 호출되기 전에 필요한 초기화 작업은 init 함수에서 처리됩니다.
- main 함수는 반환값을 가질 수 없습니다. 즉, func main() int는 불가능합니다.
- 다른 함수처럼 main()을 호출할 수 없습니다.
- 하나의 프로그램에서 main 함수는 하나만 정의할 수 있습니다.