값 넘겨주고 넘겨받기

김대익·2022년 4월 21일
0

둘 이상의 리턴값

Go언어는 2개 이상의 리턴값을 가질 수 있다
Go관례상 에러는 마지막 값으로 리턴

func WriteTo(w io.Writer, lines []string) (int64, error) {
	//return n, err
}

에러값 주고받기

예외가 발생한 곳과 처리가능한 곳이 다른 경우가 많다.
그럴 때 예외를 그대로 호출자에게 반환하려면

if err := MyFunc(); err != nil {
	return nil, err // Myfunc()함수에서 생긴 에러를 호출자에게 그대로 리턴
}

새로운 에러를 생성해야할 때는

  • errors.New
  • fmt.Errorf

를 이용할 수 있다.

errors.New("stringlist.ReadFrom: line is too long")은 문자열 메시지를 출력
fmt.Errorf("stringlist: too long line at %d", count)은 문자열 메시지에 부가 정보를 추가가 가능하다


명명된 결과 인자

func WriteTo(w io.Writer, lines []string) (n int64, err error) {
	return
}

리턴값을 나열하지않고 return만 쓸 경우 (n int64, err error)선언했던 인자들의 값들이 반환된다
이를 Named return parameter라고 한다


가변인자

넘겨받을 수 있는 인자의 개수가 정해지지 않은 함수를 만드려면

func WriteTo(w io.Writer, lines... string) (n int64, err error) {

인수인 lines는 string형 변수로 선언했지만 ...을 붙이면서 슬라이스가 된다
그래서 WriteTo(w, "hello", "world", "Go lang")식으로 인수를 보낼 수 있다

또 이미 슬라이스로 갖고 있는 자료를 가변인자를 두고 있는 함수로 넘기려면

lines := []string{"hello", "world", "Golang"}
WriteTo(w, lines...)

명명된 자료형

자료형에 새로 이름을 붙이는 방법은
type rune int32
이는 int32에게 rune이라는 새로운 이름을 붙인 것이다.
이를 Named Type이라 한다

0개의 댓글