[Go 언어] 16. 직관적인 사칙 연산과 비교해 보세요.

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

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

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

[그림 1] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
// Example 사칙 연산자 개요
package main
 
import "fmt"
 
func main() {
    var i1 int = 2
    var i2 int = 3
   
    fmt.Println(i1, "+", i2, "=", i1+i2)
    fmt.Println(i1, "-", i2, "=", i1-i2)
    fmt.Println(i1, "*", i2, "=", i1*i2)
   
    var f1 float32 = 0.2
    var f2 float32 = 0.3
    fmt.Println(f1, "+", f2, "=", f1+f2)
    fmt.Println(f1, "-", f2, "=", f1-f2)
    fmt.Println(f1, "*", f2, "=", f1*f2)
   
    var c1 complex64 = 2 + 3i
    var c2 complex64 = 1 + 2i
    fmt.Println(c1, "+", c2, "=", c1+c2)
    fmt.Println(c1, "-", c2, "=", c1-c2)
    fmt.Println(c1, "*", c2, "=", c1*c2)
   
    var s1 string = "hello,"
    var s2 string = " ehclub.co.kr"
    fmt.Println(s1, "+", s2, "=", s1+s2)
}

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

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

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

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

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

[그림 4] LiteIDE에서 새 프로젝트 생성 및 소스 파일 추가
// Example 나누기 연산
package main
 
import "fmt"
 
func main() {
    var i1 int = 8
    var i2 int = 3   
    fmt.Println(i1, "/", i2, "=", i1/i2)
   
    var f1 float32 = 3.2
    var f2 float32 = 2.1
    fmt.Println(f1, "/", f2, "=", f1/f2)
}

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

  • 정수/정수
    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

3.2 / 2.1 = 1.5238097

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

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