[Go tutorial] Go 정리하기 - 1
Go-tour 참조
익스포트
- Go 에서는 첫 문자가 대문자로 시작하면 특정 패키지를 사용하는 곳에서 접근할 수 있는 exported name이 됨
함수
Go 는 코드를 왼쪽부터 자연스럽게 읽기 위해 매개변수 타입은 변수명 뒤에 명시.
두 개 이상의 매개변수가 같은 타입일 때, 같은 타입을 취하는 마지막 매개변수에만 타입을 지정할 수 있음.
1
2
3
4
5x int, y int
#를 아래와 같이도 사용 가능
x, y int하나의 함수는 여러 개의 결과를 반환할 수 있음.
1
2
3func swap(x, y string) (string, string) {
return y, x
}
변수
var 을 통해 변수를 선언.
변수 선언과 함꼐 초기화 가능, 초기화를 하는 경우 타입 생략 가능. 이 경우, 초기화하고자 하는 값에 따라 타입이 결정됨.
1
var a, b, c int = 1, 2, 3
함수 내에서 := 을 사용하면 var와 명시적인 타입을 생략할 수 있음.
상수
const 키워드와 함께 변수처럼 선언.
상수는 문자, 문자열, boolean, 숫자 타입 중의 하나가 될 수 있음
숫자형 상수는 정밀한 값을 표현할 수 있음. Go-tour 사이트에서 제공하는 예제를 이해하기 위해서는 Go의 << 와 >> 연산자의 이해가 필요하다.
<<, >> 연산자에 대해
- << 와 >> 연산자는 비트 이동 연산자로 Left shift, Right shift 라고 함.
- Left shift 는 현재 값의 비트를 주어진 값만큼 왼쪽으로 Right shift는 현재 값의 비트를 주어진 값만큼 오른쪽으로 옮깁니다.
1
2
3
4
5
6
7
8
9
10
11const (
a = 1
b = a << 1
)
func main() {
fmt.Println(a) ### 1 출력
fmt.Printf("%08b\n", a) ### 00000001 출력
fmt.Println(b) ### 2 출력
fmt.Printf("%08b", b) ### 00000010 출력
}
반복문 for
Go 에는 반복문으로 for 하나만 존재.
조건문만 표현해서 루프를 표현 가능.
1
2
3
4
5
6
7func main() {
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
}위와 같이 표현하면 while을 사용하듯 for을 사용할 수 있다.
조건문을 생략하는것으로 무한 루프를 만들 수 있다.
1
2
3
4func main() {
for {
}
}
조건문 if
반복문과 마찬가지로 실행문을 위한 { } 만 필요.
for 처럼 조건문 앞에 문장을 실행할 수 있음.
1
2
3
4
5
6func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v
}
return lim
}위의 예를 보면, v < lim 을 통한 조건문 앞에 v := math.Pow(x,n) 을 실행했다.
이렇게 선언된 변수(위에서는 v)는 if 안쪽 범위에서만(else 블럭 안에서도 가능) 사용할 수 있다.
- 연습 : 루프와 함수 >>> solution