고랭고랭 - 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후 실행됨
// 문자열 리턴