Go 언어에 대해서 공부할 기회가 생겨서 간단하게 공부할겸 정리해보려구한다
변수와 상수
변수 : var 키워드로 선언하며, 초기값을 선언하지 않으면 zero-value로 초기화된다. 타입 추론을 통해 ':=' 연산자로 변수의 타입을 명시하지 않고 선언할 수 있다.
var name string = "Hello"
age := 11 // int 타입으로 추론
상수 : 'const'키워드를 사용해 상수를 선언하며, 변경 불가능한 값을 갖는다
const greeting = "Hello, World!"
데이터 타입
정수형 : int, int8, int16, int32, int64, uint, uint8 등
실수형 : float32, float64
불리언 : bool
문자열 : string
복합 데이터 타입으로는 배열, 슬라이스, 구조체 , 맵, 채널 등이 있다.
배열 :
var arr [5]int
슬라이스 :
s := []int{1, 2, 3}
맵 :
m := map[string]int{
"one": 1,
"two": 2,
}
조건문과 반복문
if x > 10 {
fmt.Println("x is higher than 10")
} else {
fmt.Println("x is less than or equal to 10")
}
i := 1
for i <= 3 {
fmt.Println(i)
i = i + 1
}
for j := 7; j <= 9; j++ {
fmt.Println(j)
}
for {
fmt.Println("loop")
break
}
for i := 0; i < 10; i++ {
fmt.Println(i)
}
함수
func 키워드로 선언되며, 파라미터와 반환 타입을 지정할 수 있다.
func greet(name string) string {
return "Hello, " + name + "!"
}
동시성
Goroutines : 경량 스레드로 'go' 키워드를 사용해 함수를 동시에 실행할 수 있게 한다.
go func() {
fmt.Println("Running in a goroutine")
}()
Channels : Goroutines 간에 데이터를 안전하게 전달하는 메커니즘이다.
ch := make(chan int)
go func() {
ch <- 42 // send 42 to channel
}()
fmt.Println(<-ch) // receive value from channel