Go  프로그램을 시작하면서 main 함수를 사용해왔다.

func main() {}

대부분의 프로그래밍 언어들이 main 에서 시작하는 것은 관례라 볼 수 있다.

 

main menu 식당의 메인메뉴와 같이 가장 중요한 함수라는 것 이다. go 프로그램은 메인함수에서 시작하고 끝났다.

 

이제 사용자 정의함수를 만들어 본다. 프로그래밍 언어를 배울 때 보통 고전적인 함수를 정의해본다.

 

package main

import "fmt"

func main() {
	fmt.Println("func main start")
	sayHello()
}
func sayHello() {
	fmt.Println("Hello Sir")
}

결과창

 

매개변수가 없는 함수 sayHello 를 정의했다. 이 함수의 기능은 인사말을 출력하는 것이다.

 

다음은 매개변수와 반환값이 있는 함수이다.

package main

import "fmt"

func main() {

	fmt.Println("func main start")
	a := 7
	b := 3
	fmt.Println(" a : ", a, " b : ", b)
	fmt.Println("add : ", caculation(a, b, "add"))
	fmt.Println("sub : ", caculation(a, b, "sub"))
	fmt.Println("mul : ", caculation(a, b, "mul"))
	fmt.Println("div : ", caculation(a, b, "div"))
	fmt.Println("div : ", caculation(a, b, "none"))
}
func caculation(a int, b int, mode string) int {
	result := 0
	switch mode {
	case "add":
		result = a + b
	case "sub":
		result = a - b
	case "mul":
		result = a * b
	case "div":
		result = a / b
	default:
		fmt.Println("No mode match")
	}
	return result
}

 사칙연산을 하나의 함수에 포함시켰다. switch case 문으로 작성했다.

 

int a, int b는 실제 계산에 쓰일 변수다. mode 는 어떤 계산을 할지 스위치문에서 선택하게 한다.

 

자바같은 대중적인 프로그램과는 또 다른 모습을 보여준다. 일단 매개변수의 이름이 먼저 나오고 다음에 타입이 나와서 헷갈렸다.

 

결과창

비주얼 스튜디오 코드의 Go 확장기능을 사용하면 문장을 완성하고 엔터키를 칠때마다 전체의 간격을 자동으로 잡아주는 기능이 있어서 좋다. 아직 문법에 익숙하지 않았지만 강사에게 도움을 받는 것 같다.

 

 

여러개의 값을 반환하기

 Go lang 에서는 여러개의 값을 반환할 수 있다.

package main

import "fmt"

func main() {
	fmt.Println("ready to go")
	num := 5
	n1, n2, n3 := f1(num)
	fmt.Println("square : ", n1, " cube : ", n2, " fourth power : ", n3)
}
func f1(num int) (int, int, int) {
	a := num * num
	b := a * num
	c := b * num
	return a, b, c
}

결과창

함수를 정의할 때 반환형을 매개변수의 뒤에다 정의한다. 다른 언어에서는 반환형을 함수이름 앞에다 붙였다. 확실히 차이가 있다. GO를 만들 때 무슨 컨셉으로 만들었는지 점점 더 궁굼하게 만든다. 확실한 컨셉이 있는 것 같다

 

Go 프로그래밍 입문을 참고했다. 함수 부분에 클로저나 재귀 예외처리를 위한 panic 등의 주제가 포함되어 있는데 아직 Go 언어 자체를 습득하는 과정이라 다루지 않았다. 우선은 전체를 한번 훑고 다시 리뷰할 때 세부사항으로 들어가 봐야겠다.

 

한글자료는 조금 부족하겠지만 온라인상에는 좋은 레퍼런스가 많이 나와있으니 많은 참고가 된다.

 

 

Go 프로그래밍 입문

 

codingnuri.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band