본문 바로가기
IT/PROGRAM

go언어 시작하기 . 기초 코딩 문법 정리 ①

by SidePower 2022. 10. 1.

 

Go 프로그램의 기본형입니다.

package main

import "fmt"

func main() {
    fmt.Println("go frist")
}

 

C언어와 JAVA에서도 볼 수 있듯이 프로그램의 시작은

언제나 main 입니다.

 

Go는 패키지 선언으로 시작하며

main 패키지를 먼저 찾고 그다음 main함수를 찾아 시작합니다.

import는 외부 패키지를 포함시킬 때 사용하는 키워드이며 

함수는 func 키워드로 선언합니다.

 

실행 방법은 go run 소스파일이며

소스파일은 확장자를 go로 합니다. test 1.go로 샘플 작성했어요.

[tmach@localhost test]$ vi test1.go
package main
func main(){
        println("go first!")
}

[tmach@localhost test]$ go run test1.go
go first!

 위와 동일한 소스인데요. 컴파일 오류가 발생합니다.^^;;
package main
func main()
{
        println("go first!")
}
[tmach@localhost test]$ go run test1.go
# command-line-arguments
./test1.go:2:6: missing function body
./test1.go:3:1: syntax error: unexpected semicolon or newline before {

 

syntax error
{ 앞에 예기치 않은 세미콜론 또는 개행으로 해석되네요.

소스 차이는 main() 뒤에 중괄호 { 를 다음 줄로 내린 것뿐인데요.^^;;
이런거까지 에러 처리하다니.. 기분 나빠질라고 하네요.

 


어쨌든 Go 언어 문법상 컴파일할 때 컴파일러가 문장 끝에 세미콜론(;)을
자동으로 붙이고 줄 단위로 해석하는데
문장 끝에 괄호를 여는 문자 { 나 연산자 또는 쉼표 등이 오면 
세미콜론(;)을 붙이지 않습니다.

 

오류 포맷은 [파일:줄:시작위치: 오류메시지] 입니다.

 

 ./test1.go:2:6: missing function body

함수를 시작하는 의미로 함수 끝에 중괄호 { 가 있어야 되는데
없기 때문에 자동으로 세미콜론(;) 붙여버리고 의미 없는 줄로 해석되고

 

 ./test1.go:3:1: syntax error: unexpected semicolon or newline before {

{ 는 함수 또는 제어문을 시작하는 의미인데요.

{ 앞에 함수 또는 제어문은 없고 개행(newline)이 있어 에러가 발생한 거예요.^^;;

 

그렇다면 Go언어에서 세미콜론 ; 에 대해서 알아볼게요.

세미콜론은 C언어와 자바처럼 Go에서도 문장(줄)의 끝을 나타냅니다.

그치만 Go 소스들을 보면 세미콜론은 거의 없습니다.

위에서도 언급했지만

컴파일러가 알아서 자동으로 붙이고 해석하기 때문입니다.

 

소스상에서 명확히 여러 줄을 하나의 줄로 구분하고 싶다면

세미콜론을 기입해도 컴파일에 문제없습니다.

package main
func main() {
    var str string = "ABCD" +
    "EFGH";
    println(str)
}

[tmach@localhost test]$ go run test2.go
ABCDEFG

 

 

감사합니다.

반응형

댓글