고랭고랭 - 2. Go 변수, 상수, 함수

2021. 1. 6. 18:56개발노트

main.go

Go언어는 'main.go'파일을 통해 컴파일한다.
따라서 컴파일을 위해 'main.go' 파일이 있어야 한다.

기본 구조는 아래와 같다.

package main

func main() {

}

go run main.go 명령어로 실행

변수

'var'를 사용해 아래와 같이 선언한다.

var num int = 10
var num2 int
num2 = 11
var f_num float32 = 10.1
var name string = "jinho"

var (
        vname = "jinho"
        vage  = 26
    )

var num = 10
var num := 10
타입을 생략하면 Go에서 알아서 타입을 추론한다.
때문에 위 방법으로도 변수를 선언 할 수 있다.

상수

'const'를 사용해 아래와 같이 선언한다.

const cnum int = 22
const cnum2 = 33
const name2 string = "my name"
const (
        name = "jinho"
        age  = 26
        team = "red"
    )

iota

'iota'를 사용하면 순차적으로 1씩 증가되는 값을 부여 받는다.

const (
        name = iota // 0
        age            // 1
        team        // 2
       )

 

함수

package main

import (
	"fmt"
)

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

func main() {
	fmt.Println(sumValue(2, 5))

}

 

출력을 위해 'fmt'를 import한다.

두 수를 매개변수로 받고 더한 값을 return하는 'sumValue'함수를 만들었다.

go언어에서는 위와 같이 매개변수와 return해서 돌려줄 값의 타입을 지정해줘야 한다.

 

아래와 같은 방법도 가능하다.

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

 

함수에서 return값이 여러개일 때는 아래와 같은 방법으로 타입을 지정할 수 있다.

func lenAndUpper(name string) (int, string) {
	var length = len(name)
	var uppercase = strings.ToUpper(name)
	return length, uppercase
}
func lenAndUpper(name string) (length int, uppercase string) {
	length = len(name)
	uppercase = strings.ToUpper(name)
	return
}

 

아래와 같이 타입 앞에 '...'을 써주면 무제한으로 argument를 받을 수 있다.

func myWords(words ...string) {
	fmt.Println(words)
}

func main() {
	myWords("test1", "test2", "test3", "test4")
}

// output
// [test1 test2 test3 test4]

 

defer

'defer'은 함수를 실행한 후 return값을 전달하고 실행된다.

func deferTest() string {
	defer fmt.Println("return후 실행됨")
	return "문자열 리턴"
}

func main() {
	fmt.Println(deferTest())
}

// output
// return후 실행됨
// 문자열 리턴