언어 자료구조 알고리즘/구글 Go

[구글 Go 하자] 16. 직관적인 사칙 연산과 비교해 보세요.

언제나휴일 2016. 5. 30. 15:38
반응형

16. 직관적인 사칙 연산과 비교해 보세요.



 안녕하세요. 언제나 휴일, 언휴예요.


 이번 게시글에서는 사칙 연산을 살펴볼 거예요. 사칙 연산은 여러분이 직관적으로 생각하는 것과 큰 차이는 없어요.


 새 프로젝트를 생성하여 여러분이 생각하는 것과 차이가 없는 부분을 표현해 보기로 해요.

LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가

[그림 1] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가 



 두 개의 정수 사이의 덧셈, 뺄셈, 곱셈 연산, 두 개의 실수 사이의 덧셈, 뺄셈, 곱셈 연산, 두 개의 복소수 사이의 덧셈, 뺄셈, 곱셈 연산은 여러분이 생각하는 것과 차이가 없어요. 그리고 문자열 사이의 덧셈도 직관적으로 생각할 수 있는 결과인 두 개의 문자열을 합한 문자열이예요.

사칙 연산 개요 실행 결과

[그림 2] 사칙 연산 개요 실행 결과


 그런데 Go 언어는 강력한 형식 언어로 서로 다른 형식 사이에 사칙 연산은 제공하지 않아요. 다음 그림은 정수 형식과 실수 형식 사이에 더하기 연산을 수행하는 코드를 컴파일할 때 나오는 에러 발생 화면이예요. 여러분께서도 직접 코드를 작성하여 빌드해 보세요. 에러가 발생하는 것을 확인할 수 있을 거예요.

다른 형식 사이에 사칙 연산에서의 에러 발생 화면

[그림 3] 다른 형식 사이에 사칙 연산에서의 에러 발생 화면


 또한 정수 사이의 나누기 연산은 연산 결과가 정수입니다. 나누기 연산에서 나머지는 버리기 때문에 내림 법칙을 사용하다는 것에 주의하세요. 새 프로젝트를 생성하여 확인해 보아요.

LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가

[그림 4] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가 



 

먼저 정수 형식 사이에 나누기 연산을 테스트 해 보세요.

  • 정수/정수

    var i1 int = 8

    var i2 int = 3    

    fmt.Println(i1, "/", i2, "=", i1/i2)


 8을 3으로 나누면 몫이 2이고 나머지는 2죠. Go 언어에서 나누기 연산에서는 나머지는 버립니다. 따라서 8/3의 결과는 2예요.

8 / 3 = 2


그런데 실수 형식 사이에서 나누기 연산은 직관적으로 생각하는 나누기와 같습니다.

  • 실수/실수

    var f1 float32 = 3.2

    var f2 float32 = 2.1

    fmt.Println(f1, "/", f2, "=", f1/f2)


위 코드의 실행 결과는 다음과 같아요.

3.2 / 2.1 = 1.5238097


[그림 5] 나누기 연산 예제 실행 화면


 이 외에도 여러분께서 어떠한 결과가 나올까 의심스러운 것이 있으면 직접 코드를 작성해서 확인해 보세요. 프로그래밍에서 적극적인 액션들이 보다 내실을 단단하게 만들어 줄 거예요.



관련 게시글

[구글 Go 하자] 14. Go 언어 연산자 개요

[구글 Go 하자] 15. 부호 연산자도 연산자

[구글 Go 하자] 17. 변수의 값을 특정 범위에서 순환하게 하기

[구글 Go 하자] 18. 자신의 값을 1 증가하거나 감소시키는 증감 연산자

[구글 Go 하자] 19. Go언어에서는 비교 연산자를 사용하는 곳이 많아요.

[구글 Go 하자] 20. Go언어의 논리 연산의 피연산자는 bool 형식만 올 수 있어요.

[구글 Go 하자] 21. 비트 단위로 연산하는 비트 연산자

[구글 Go 하자] 22. 쉬프트 연산은 비트 단위로 자리를 이동합니다.

[구글 Go 하자] 23. 다양한 대입 연산자, 좌항에 상수는 올 수 없어요.

반응형