본문 바로가기

go언어 블록체인

노마드 코인 12-15 리뷰

이번 강의는 하나의 서버가 닫혔을 때 err 관리를 해주는 강의입니다

 

자 왜 이걸 하는지부터 알아보고 들어갈까요?

당연히 서버가 닫혀서 err가 나는걸 핸들링해주기 위해서입니다

 

그럼 Peers 맵에서 닫힌 서버를 삭제해주어야 하겠죠?

특정 맵을 삭제해주기 위해서는 해당 맵의 key와 value를 다 알고있어야 합니다

그러면 initPeer() 함수에서 고쳐주어야 할 부분이 보이는데요

해당 함수에서 만든 key 를 peer에 넣어줌으로써 close()함수를 만들어 에러 핸들링을 손쉽게 할 수 있을겁니다

 

peer 구조체에 변수들을 더 만들고

 

close() 함수를 만들어서

read(), write() 함수에서 에러가 나면 for loop을 break로 빠져나와서 defer 에 p.close()함수를 위치시켜

에러 핸들링을 해줍니다

 

이렇게 코딩하고 나서 확인을 해보면

포트 4000, 포트 3000을 실행시키고

포트 4000을 끊으면

포트 3000이 read를 하다가 err를 발견하고 for loop을 break하며 defer p.close()함수가 실행됩니다

그러므로 포트 4000이 종료되면 포트 3000이 close()함수를 사용하여 에러 핸들링을 하게됩니다

 

 

영상 후반부에는 다음 강의인 Data races에 대해서 간략히 설명해주십니다

CLI에 -race flag를 추가해서 실행시킨 뒤

이전과 같은 에러를 실행시키면

콘솔창에 에러같지만 에러가 아닌 무언가를 띄우는데 이것이 무엇인지는 다음 강의에서 살펴본다고 합니다!

 

끝!

 

그런데 궁금한게 생겼습니다

read()에 fmt.Printf("%s",m)을 하면 제 때 잘 나오고

write()에  fmt.Printf("%s",m)을 하면 read()함수에 썼을 때와 반대로 나오던데 그 이유가 뭘까요?

한번 알아봐야겠습니다

'go언어 블록체인' 카테고리의 다른 글

노마드 코인 12-17 리뷰  (0) 2021.08.17
노마드 코인 12-16 리뷰  (0) 2021.08.17
노마드 코인 12-14 리뷰  (0) 2021.08.17
노마드 코인 12-13 리뷰  (0) 2021.08.13
노마드코인 12-11 리뷰  (0) 2021.08.13