반응형

Golang 프로그래밍 예제 1

글. 수알치 오상문

 

1. 프로젝트 폴더(예; exam) 만들고,

   해당 폴더로 이동한다.

 

2. 패키지 관리 파일 초기화 (Mod 파일 생성)
go mod init main

[참고] 패키지 추가 다운로드 명령 (아래 예제에선 필요 없음)

go get github.com/example/package

3. 프로그램 작성 main.go

아래 예제 코드를 복사해서 만들어도 된다. 

 

4. 실행

방법 1: 테스트할 때 유용함
go run main.py

방법 2: 실행 파일 main.exe  만들어서 실행하기
1) go build main.go           

    또는
2) go build -ldflags="-s -w" main.go   

   디버그 정보 등 제거하면 main.exe 파일 크기 축소됨 (약 60% 크기가 됨)

 

이렇게 만들어진 main.exe 실행한다.

 

예제 코드는 다음과 같다.

main.go

 

package main // 패키지명 설정

import ( // 패키지 임포트
    "fmt"
    // 더 필요하면 아래에 계속 패키지 지정 (콤마 없음)
)

// 함수 정의 시작 구조 : func 함수명 (전달인수 목록) 반환형 {
func message(msg string, ret int) int { // '{' 위치를 아래 줄로 내리면 에러!
    println(msg) // 문장 뒤에 세미콜론 사용 안함
    return ret
}

func calc(v1 int, v2 int) (int, int, int, int) {
    r1 := v1 + v2
    r2 := v1 - v2
    r3 := 0

    if v2 != 0 { // golang은 3항 조건연산자 없음
        r3 = v1 / v2
    }

    r4 := v1 * v2 // 필요한 곳에서 변수 정의하고 사용

    return r1, r2, r3, r4
}

func main() { // main 함수는 No argument, no return value

    // 디버깅이나 간단한 출력에 println 사용
    var hello string = "Hello, world!" // hello := "Hello, world!"처럼 정의 가능
    println(hello)                     // 변수 만들고 사용 안하면 에러!

    // fmt.Println()과 fmt.Printf()을 사용하여 형식 출력
    var name1 = "홍길동" // name1 := "홍길동"
    var age1 = 500    // age1 := 500
    fmt.Printf("이름은 %s 나이는 %d\n", name1, age1)

    name := "홍길동" // 대입 값 형에 의해 자동으로 변수 형 지정됨
    age := 500
    fmt.Printf("이름은 %s 나이는 %d\n", name, age) // C 언어 printf 함수와 비슷
    fmt.Println("이름은", name, "나이는", age)     // 파이썬 print 함수와 비슷

    ret := message("Hello, world!", 100) // 사용자 함수 호출
    println("return value:", ret)

    name2 := name
    println(name2)

    println(calc(8, 2))
}

 

[실행 결과]

Hello, world!
이름은 홍길동 나이는 500
이름은 홍길동 나이는 500
이름은 홍길동 나이는 500
Hello, world!
return value: 100
홍길동
11 5 2 24

반응형

'Go (Golang)' 카테고리의 다른 글

Go 1.21, slice 기능 지원  (1) 2023.11.12
Golang Korea 개발자 그룹 링크  (0) 2023.11.12
CentOS에 Go 설치하기  (0) 2023.10.30
당근마켓 개발팀 Go 언어 도입 이야기  (0) 2023.10.29
Go 언어 프레임워크 Top 5  (0) 2023.10.24

+ Recent posts