티스토리 뷰

반응형

Go 언어 기본 문법

1. 프로그램 구조

Go 프로그램의 기본 구조는 C와 유사하지만, packageimport 키워드를 사용합니다. C의 #include와 비슷하게, Go에서는 import로 필요한 패키지를 가져옵니다.

package main // 실행 가능한 프로그램은 항상 'main' 패키지로 시작

import "fmt" // C의 stdio.h와 비슷하게 fmt 패키지로 표준 입출력 기능 사용

func main() { // C의 main 함수와 유사
    fmt.Println("Hello, World!") // 표준 출력
}

2. 변수 선언

Go에서는 변수 선언이 var 키워드와 타입을 이용해 이루어집니다. 기본적으로 타입은 변수명 뒤에 위치합니다. :=를 사용하면 Go가 자동으로 타입을 추론할 수 있습니다.

var x int = 10 // 명시적 선언
y := 20        // 암시적 선언, y는 int로 추론

C와는 다르게 Go에서는 선언된 변수는 반드시 사용해야 합니다. 사용하지 않으면 컴파일 에러가 발생합니다.

3. 함수 선언

Go의 함수 선언은 C와 비슷하지만, 반환 타입이 함수 선언의 마지막에 위치합니다.

func add(a int, b int) int {
    return a + b
}

반환 타입을 명시적으로 지정하며, 여러 반환 값을 지원합니다.

func swap(x, y int) (int, int) {
    return y, x
}

4. 포인터

Go에서도 C와 마찬가지로 포인터를 사용할 수 있지만, 포인터 연산은 제한적입니다. *& 연산자는 여전히 사용됩니다.

var p *int
i := 42
p = &i // p는 i의 주소를 가리킴

fmt.Println(*p) // p가 가리키는 값 출력 (42)

Go에서는 포인터 산술(pointer arithmetic)을 지원하지 않으며, 이는 메모리 안전성을 유지하기 위함입니다.

5. 제어문

Go의 if, for, switch는 C와 유사하지만, 괄호를 생략합니다. for는 Go에서 유일한 반복문입니다.

for i := 0; i < 10; i++ { // 전통적인 for 문
    fmt.Println(i)
}

if x := 10; x > 5 { // 조건문에서 변수 선언 가능
    fmt.Println("x is greater than 5")
}

switch x { // C의 switch와 유사하지만, break를 명시적으로 쓰지 않음
case 1:
    fmt.Println("One")
case 2:
    fmt.Println("Two")
default:
    fmt.Println("Other")
}

6. 문자열

Go에서는 문자열이 불변(immutable)입니다. C와 달리, 문자열은 포인터가 아닌 고정 길이의 배열처럼 다루어지며, string 타입이 따로 존재합니다.

7. 구조체와 메서드

Go에서 구조체는 C와 유사하게 정의됩니다. 하지만 메서드를 구조체에 추가할 수 있습니다.

type Person struct {
    Name string
    Age  int
}

func (p Person) Greet() { // 메서드 선언
    fmt.Printf("Hello, my name is %s and I am %d years old.\n", p.Name, p.Age)
}

8. 메모리 관리

Go는 자동으로 메모리를 관리하는 가비지 컬렉터(Garbage Collector)가 있어서, C처럼 수동으로 메모리를 할당(malloc)하고 해제(free)할 필요가 없습니다.

9. 병행성(Concurrency)

Go는 고루틴(goroutine)을 통해 매우 간단하게 병행성을 구현할 수 있습니다. go 키워드를 사용해 함수 호출을 병행으로 실행할 수 있습니다.

go func() {
    fmt.Println("Concurrent Go Routine!")
}()

요약

  • Go는 C와 유사한 구문을 가지고 있지만, 더 간결하고 현대적인 기능을 지원합니다.
  • 메모리 관리가 자동화되어 있고, 포인터 연산이 제한적입니다.
  • 병행성을 쉽게 구현할 수 있는 고루틴을 제공하여, 고성능 서버 프로그래밍에 적합합니다.
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함