Golang의 특징
[Go
]
Golang의 특징을 보다가 정리 차원에서 여기에 몇 자를 적는다.
- 포인터 지원
- 구조체 지원, class라 불리우는 건 없음 : 정말 C처럼 만들고 싶었나 보다.
- 메서드가 대신 존재
//Rect - struct 정의
type Rect struct {
width, height int
}
//Rect의 area() 메소드
func (r Rect) area() int {
return r.width * r.height
}
func main() {
rect := Rect{10, 20}
area := rect.area() //메서드 호출
println(area)
}
- 고루틴의 존재
- 간편한 동기 처리를 위해 고루틴이 존재
- 다른 프로그램은 고루틴을 기다리지 않는다. 동기화 싱크가 필요
- sync.WaitGroup사용
- Add, Done, Wait 사용
package main
import (
"fmt"
"sync"
"time"
)
var wg sync.WaitGroup
func job(s string){
//defer wg.Done()
for i:=0 ; i<3 ; i++ {
time.Sleep(100*time.Millisecond)
fmt.Println(s)
}
wg.Done()
}
func main() {
wg.Add(1)
go job("첫번째 작업")
wg.Add(1)
go job("Second work")
wg.Add(1)
go job("三番目の作業")
wg.Wait()
}
고루틴이 동기화 프로그램 자체가 아니라 동기화 지원 도구라는 이슈가 있기는 하다.
어떻게 보면 C의 정신을 계승하려는 의지가 많이 보였으며, 배열 등의 데이터 처리, 묵시적 선언 등은 파이썬을 좀 닮은 곳도 있어 보인다.
이제야 Go를 보고 있다니.. 당분간 Go와 사랑에 빠질 것 같다.