메소드(Method)
메소드는 함수와 비슷하지만 객체에 속한다는 점에서 차이가 있다.
메소드 만드는 법
// object.go
func (o object) Method(something string) int {
//...doing Something..
}
// main.go
func main(){
o.Method()
}
Receiver
GO에서는 (o object)
를 리시버(receiver) 라고 부른다. o
는 변수명로 object
는 타입으로 분류된다.
⚠️ receiver는 객체(struct)의 첫 글자를 소문자로 작성해야된다는 규칙이 있음
⚠️ 객체를 직접적으로 변경할 때는 pointer를 사용하고 객체를 읽기만 한다면 객체 복사본을 사용한다.
Error Handling
GO에서는 try-catch
와 같은 개념이 없기때문에 직접 하나하나 유효성 검사를 실행해야한다.
에러는 아래와 같이 처리한다.
func (a *Account) Withdraw(amount int) error {
if a.balance < amount {
return errors.New("Can't withdraw you are poor")
}
a.balance -= amount
return nil
}
nil
null
과 비슷한 개념
GoRoutines
동시 작업을 도아주는 기능
- 함수 앞에
go
를 붙여주면 된다. 단, 비동기 작업은 함수가 실행될때만 작동하며 모든 작업이 비동기로 이루어지면 함수는 중단된다.
Channel
gorutine 사용시, 메인 함수와 값을 공유할 수 있는 변수, gorutine의 수만큼 받아올수 있다.
보내기 : channel <- value
받아오기 : varable := <- channel