Skip to Content
러닝 Go : Go 개발자처럼 생각하는 방법
book

러닝 Go : Go 개발자처럼 생각하는 방법

by 존 보드너, 윤대석
February 2022
Beginner to intermediate
452 pages
10h 48m
Korean
Hanbit Media, Inc.
Content preview from 러닝 Go : Go 개발자처럼 생각하는 방법
298
러닝 Go
result, err = doSomeWork()
close(done)
}()
select {
case <-done:
return result, err
case <-time.After(2 * time.Second):
return 0, errors.New(“work timed out”)
}
}
Go
에서 작업에 걸리는 시간을 제한해야 할 때마다 이런 패턴의 변형을 볼 수 있다. 두
case
select
로 선택할 수 있다. 첫 번째
case
는 앞서 보았던
done
채널 패턴의 장점을 가진다.
result
err
에 값을 할당하고
done
채널을 닫기 위해 클로저를 고루틴으로 사용했다.
done
채널이 먼저 닫히면,
done
으로부터 성공적으로 읽게 되고 값들은 반환된다.
두 번째 채널은
time
패키지에 있는
After
함수에서 반환된다. 이것은 지정된
time
.
Duration
이 지나면 값이 쓰여질 것이다. (
11
.
2
절 ‘시간’에서
time
패키지에 관해 다루어 보
자. )
doSomeWork
가 끝나기 전에 해당 값이 읽힌다면,
timeLimit
은 타임아웃 오류를 반환한다.
NOTE
_ 고루틴이 처리를 끝내기 전에
timeLimit
을 종료하면, 고루틴은 계속 실행을 한다. 이는 (결국) 반
환하는 결과에 대해 아무것도 하지 않는다. 더 이상 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

효율적인 리눅스 명령어 사용의 기술

효율적인 리눅스 명령어 사용의 기술

Daniel J Barrett

Publisher Resources

ISBN: 9791162245309