// 자료형 생략 가능하지만 값 반드시 함께 저장
var 변수명 = 값
var n1 = 1
// 같은 자료형 가지는 변수 여러개 선언
var 변수1, 변수2 자료형
var n1, n2 int
// 여러 변수에 한 번에 값을 초기화 : 선언과 동시에 값을 초기화하면 타입 명시 안해도 됨
var n1, s1 = 12, "Hello"
// 자료형을 변수명 뒤로
var 변수명 자료형
// var과 자료형을 축약
// 함수 안에서는 :=를 쓰면 var과 타입을 지정하지 않고 변수 선언 + 초기화
// 함수 밖에서는 사용 불가!
// 함수 밖에서는 키워드(var, func 등)로 시작해야 하기 때문
변수명 := 값
// var 생략
변수명 자료형
변수명 자료형 = 값
// 다른 타입을 가지는 변수 여러개 선언
var (
i int
s string
b bool
f float64
)
변수 선언 후 초기화 하지 않으면 zero value로 초기화
변수 타입 | zero value |
---|---|
숫자(int, float64 등) | 0 |
boolean | false |
string | "" |
Go는 묵시적 형 변환을 하지 않아, 타입이 맞지 않으면 값을 할당할 수 없음
var (
i int 4
f float64 3.14
)
func main() {
// 묵시적 타입 변환 불가
i = f
// 다른 타입 변환
i = float64(f)
}
자료형 | 설명 |
---|---|
bool | true, false 저장 |
string | 문자 / 문자열 저장 |
int / int8 / int16 / int32 / int64 uint / uint8 / uint16 / uint32 / uint64 / uintptr | int , uint , uintptr 타입은 32-비트 시스템에서는 32비트 길이고, 64-비트 시스템에서는 64비트 길이 |
byte | |
rune | |
float32 / float64 | 실수형 |
complex64 / complex128 |
// 선언과 동시에 초기화하면 타입을 지정하지 않아도 됨
const MAX int = 987654321
const MIN = -1
// 괄호로 묶어서 상수 한번만 명시 가능
const (
maxValue = 987654321
minValue = -1
)
값 변경 불가
:= 로 선언 불가
숫자형 상수 : var
로는 표현할 수 없는 범위를 저장하는 등 수를 정밀하게 표현 가능
타입 지정 X 상수 = 맥락에 따라 타입 변화
// 상수 선언시 타입 지정하지 않음
const number 3.14
func intFunc(x int) int { return x + x }
func floatFunc(y float64) float64 { return y * 2 }
func main() {
// 상수 선언시 타입을 지정하지 않았기 때문에 int형으로 자동 변환
infFunc(number)
// 상수 선언시 타입을 지정하지 않았기 때문에 float64형으로 자동으로 변환
floatFunc(number)
}
func 함수명(매개변수1 배개면수1자료형) 리턴타입 {
..함수내용
}
func add(n1 int, n2 int) int {
return n1 + n2
}
func add(n1, n2 int) int {
return n1 + n2
}
여러 값을 한 번에 리턴 가능
return 뒤에 타입 명시
func calc(n1, n2 int) (int, int) {
// 리턴할 변수를 함수 내부에서 선언 후 return
var plus = n1 + n2
var minus = n1 - n2
return plus, minus
}
return 뒤에 리턴할 변수 선언
func calc(n1, n2 int) (plus, minus int) {
// 리턴할 변수를 함수 내부에서 선언하지 않고 바로 사용
plus = n1 + n2
minus = n1 - n2
// 미리 return으로 정해둔 변수 자동으로 리턴
return
}
func main() {
// 리턴받음
puls, minus = calc(10, 1)
}