Golang 연산자를 활용한 데이터 처리

GolangGolangBeginner
지금 연습하기

💡 이 튜토리얼은 영어로 번역되었습니다. 원본을 보려면 영어로 전환

소개

프로그래밍 언어에서 데이터를 변수에 저장한 후, 어떻게 처리해야 할까요?

이때 저장된 데이터에 대한 계산을 수행하기 위해 연산자 (operators) 가 필요합니다. 이 섹션에서는 다음을 배우게 됩니다.

지식 포인트:

  • 산술 연산자 (Arithmetic Operators)
  • 관계 연산자 (Relational Operators)
  • 논리 연산자 (Logical Operators)
  • 할당 연산자 (Assignment Operators)
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 97.22%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/BasicsGroup(["Basics"]) go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/BasicsGroup -.-> go/variables("Variables") go/FunctionsandControlFlowGroup -.-> go/for("For") go/FunctionsandControlFlowGroup -.-> go/if_else("If Else") go/FunctionsandControlFlowGroup -.-> go/functions("Functions") subgraph Lab Skills go/variables -.-> lab-149066{{"Golang 연산자를 활용한 데이터 처리"}} go/for -.-> lab-149066{{"Golang 연산자를 활용한 데이터 처리"}} go/if_else -.-> lab-149066{{"Golang 연산자를 활용한 데이터 처리"}} go/functions -.-> lab-149066{{"Golang 연산자를 활용한 데이터 처리"}} end

기본 형태

산술 연산자는 가장 기본적인 연산자로, 기본적인 계산 방법을 나타냅니다.

연산자 기능
+ 덧셈 (Addition)
- 뺄셈 (Subtraction)
* 곱셈 (Multiplication)
/ 나눗셈 (Division)
% 나머지 (Modulus, Remainder)

home/project/ 디렉토리에서 opePractice.go라는 파일을 생성합니다.

cd ~/project
touch opePractice.go

다음 코드를 작성합니다.

package main

import "fmt"

func main() {
    a := 10
    b := 3
    fmt.Println("a =", a, "b =", b)
    fmt.Println("-----")

    // 덧셈, 뺄셈, 곱셈
    fmt.Println("a + b =", a+b)
    fmt.Println("a - b =", a-b)
    fmt.Println("b - a =", b-a)
    fmt.Println("a * b =", a*b)

    // 나눗셈
    // Go 에서는 정수를 나누면 소수점 아래가 버려집니다.
    fmt.Println("a / b =", a/b)
    // 하지만 부동 소수점 숫자를 나누면 이러한 문제가 없습니다.
    fmt.Println("10.0 / 3 =", 10.0/3)

    // 나머지 계산: 일반적인 형태
    fmt.Println("a % b =", a%b)
    // 음수 나머지 계산
    // 계산 방법: 나머지 = 피제수 - (피제수 / 제수) * 제수
    fmt.Println("10 % -3 =", 10%-3)
    fmt.Println("-10 % 3 =", -10%3)
    fmt.Println("-10 % -3 =", -10%-3)
}

코드를 실행하고, 음수 나머지가 어떻게 계산되는지 특히 주의하십시오.

cd ~/project
go run opePractice.go
a = 10 b = 3
-----
a + b = 13
a - b = 7
b - a = -7
a * b = 30
a / b = 3
10.0 / 3 = 3.3333333333333335
a % b = 1
10 % -3 = 1
-10 % 3 = -1
-10 % -3 = -1

증가 및 감소 연산자 (Increment and Decrement Operators)

Go 에서 ++ (증가, increment) 및 -- (감소, decrement) 는 독립적인 문장이며, 독립적으로만 사용될 수 있습니다. 연산자가 아닙니다.

다음 코드는 잘못되었습니다.

var a int = 5
var i int = 0
a = i++ // 잘못된 사용법, 증가는 독립적으로만 사용 가능
a = i-- // 잘못된 사용법, 감소는 독립적으로만 사용 가능
a = ++i // 잘못된 사용법, Go 에는 전위 증가 (pre-increment) 가 없습니다.
a = --i // 잘못된 사용법, Go 에는 전위 감소 (pre-decrement) 가 없습니다.

올바른 구문은 다음과 같습니다.

var i = 0
i++
i++
fmt.Println(i)

opePractice.go에 다음 코드를 작성합니다.

코드를 완성하세요. 증가 연산자를 사용하여 변수 i의 값을 변경하여 변수 a의 값이 16이 되도록 하세요.

package main

import "fmt"

func main() {
    var a int = 15
    var i int = 0
    /* 아래에 코드 작성 */

    a = a + i
    fmt.Println(a)
    // a 의 출력이 16 이 되도록 코드를 완성하세요.
}
✨ 솔루션 확인 및 연습

관계 연산자 (Relational Operators)

관계 연산자는 무엇일까요?

관계 연산자는 일종의 비교로, 두 값 간의 관계를 설명합니다. 두 값이 같은지, 한 값이 다른 값보다 큰지 또는 작은지를 결정합니다.

연산자 관계
== 같음 (Equal to)
!= 같지 않음 (Not equal to)
> 큼 (Greater than)
>= 크거나 같음 (Greater than or equal to)
< 작음 (Less than)
<= 작거나 같음 (Less than or equal to)

위의 연산자는 조건이 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

opePractice.go에 다음 코드를 작성합니다.

package main

import "fmt"

func main() {
    // 관계 연산자 사용
    var a int = 7
    var b int = 6
    // 같은지 확인
    fmt.Println(a == b)  //false
    // 같지 않은지 확인
    fmt.Println(a != b)  //true
    // a 가 b 보다 큰지 확인
    fmt.Println(a > b)   //true
    // a 가 b 보다 크거나 같은지 확인
    fmt.Println(a >= b)  //true
    // a 가 b 보다 작은지 확인
    fmt.Println(a < b)   //false
    // a 가 b 보다 작거나 같은지 확인
    fmt.Println(a <= b)  //false
    // 1 이 1 과 같은지 확인
    judgeValue := 1 == 1 //true
    fmt.Println(judgeValue)
}

코드를 실행합니다.

cd ~/project
go run opePractice.go

위의 코드에서 변수 ab를 기반으로 관계 비교를 수행했습니다.

학생들은 변수 값을 수정하여 비교 결과를 변경하고 관계 연산자에 대한 더 깊은 이해를 얻을 수 있습니다.

논리 연산자 (Logical Operators)

논리 연산자는 무엇일까요?

논리 연산자는 관계 연산자의 고급 형태입니다. 주로 관계 연산자를 결합하여 추가적인 평가를 수행하는 데 사용됩니다.

연산자 관계 설명
&& And 두 피연산자 모두 true이면 결과는 true입니다.
|| Or 피연산자 중 하나라도 true이면 결과는 true입니다.
! Not 조건이 false이면 결과는 true입니다.

opePractice.go에 다음 코드를 작성합니다.

package main

import (
    "fmt"
)

func main() {
    // 논리 AND 연산자 && 시연
    var age int = 18
    if age > 15 && age < 30 {
        fmt.Println("나이는 15 세와 30 세 사이입니다")
    }
    if age > 30 && age < 80 {
        fmt.Println("나이는 30 세와 80 세 사이입니다")
    }
    // 논리 OR 연산자 || 시연
    if age > 15 || age < 30 {
        fmt.Println("나이는 15 세보다 크거나 30 세보다 작습니다")
    }
    if age > 30 || age < 40 {
        fmt.Println("나이는 30 세보다 크거나 40 세보다 작습니다")
    }
    // 논리 NOT 연산자 ! 시연
    if age > 30 {
        fmt.Println("나이는 30 세보다 큽니다")
    }
    if !(age > 30) {
        fmt.Println("나이는 30 세보다 크지 않습니다")
    }
}

위의 코드에서 변수 age의 값 18을 기반으로 일련의 논리 평가를 수행했습니다.

코드를 실행합니다.

cd ~/project
go run opePractice.go

학생들은 age 변수 값을 수정하고 코드를 실행하여 출력의 변화를 관찰할 수 있습니다.

논리 연산자의 실행 순서 (Execution Order of Logical Operators)

논리 AND 및 논리 OR 연산자를 사용할 때 Go 는 연산자 양쪽의 부울 값을 결정해야 합니다. 하지만 어떤 쪽을 먼저 평가할까요?

함께 알아보겠습니다.

opePractice.go에 다음 코드를 작성합니다.

package main

import "fmt"

func leftFunc(flag bool) bool {
    fmt.Println("Left function is called!")
    return flag
}

func rightFunc(flag bool) bool {
    fmt.Println("Right function is called!")
    return true
}

func main() {
    if leftFunc(true) && rightFunc(true) {
        fmt.Println("Evaluation is complete")
    }
}

코드를 실행합니다.

cd ~/project
go run opePractice.go
Left function is called!
Right function is called!
Evaluation is complete

논리 AND 연산에서 왼쪽 피연산자가 먼저 평가되고, 그 다음 오른쪽 피연산자가 평가된다는 것을 쉽게 알 수 있습니다.

논리 OR 연산은 어떨까요? opePractice.go에 다음 코드를 작성합니다.

package main

import "fmt"

func leftFunc(flag bool) bool {
    fmt.Println("Left function is called!")
    return flag
}

func rightFunc(flag bool) bool {
    fmt.Println("Right function is called!")
    return true
}

func main() {
    if leftFunc(true) || rightFunc(true) {
        fmt.Println("Logical OR evaluation is complete")
    }
}

코드를 실행합니다.

cd ~/project
go run opePractice.go
Left function is called!
Logical OR evaluation is complete

논리 AND 및 논리 OR 연산 모두 왼쪽에서 오른쪽으로 평가됩니다.

그러나 논리 OR 연산에서 왼쪽 피연산자가 true 이면 오른쪽 피연산자는 평가되지 않습니다.

따라서 실제 개발에서는 프로그램 실행 시간을 줄이기 위해 true 가 될 가능성이 높은 조건을 논리 OR 연산자의 왼쪽에 배치해야 합니다.

할당 연산자 (Assignment Operators)

이전 랩에서 우리는 할당 연산자를 자주 사용했습니다. 할당 연산자의 핵심 기능은 표현식의 값을 왼쪽 피연산자에 할당하는 것입니다.

왼쪽 피연산자 (Left-hand Operand): 할당 연산자 (=) 의 왼쪽에 있는 표현식 또는 변수로, 값을 쓸 수 있습니다.

실제 개발에서는 종종 한 변수에 다른 변수를 더하거나 빼야 합니다.

우리가 배운 내용을 바탕으로 다음과 같은 코드를 작성할 수 있습니다.

x = x + 1

하지만 이러한 종류의 코드는 실제 개발에서 매우 일반적이므로, 이를 위한 단축 형태를 제공합니다.

x += 1

마찬가지로, 일반적으로 사용되는 할당 연산자는 다음과 같습니다.

연산자 설명
= 기본 할당 연산자
+= 더하고 할당
-= 빼고 할당
*= 곱하고 할당
/= 나누고 할당
%= 나머지 연산 후 할당 (remainder)

opePractice.go에 다음 코드를 작성합니다.

package main

import "fmt"

func main() {
    x := 11
    fmt.Println("x 의 초기 값:", x)
    x += 5 // x = x + 5
    fmt.Println("x += 5 후의 값:", x)
    x -= 5 // x = x - 5
    fmt.Println("x -= 5 후의 값:", x)
    x *= 5 // x = x * 5
    fmt.Println("x *= 5 후의 값:", x)
    x /= 5
    fmt.Println("x /= 5 후의 값:", x)
    x %= 3
    fmt.Println("x %= 3 후의 값:", x)
}

위의 코드에서 변수 x에 초기 값 11을 할당하고 기본 산술 연산 (덧셈, 뺄셈, 곱셈), 나눗셈 및 나머지 연산을 수행합니다.

코드를 실행합니다.

cd ~/project
go run opePractice.go

변수 값을 수정하여 할당 연산자가 어떻게 작동하는지 확인할 수 있습니다.

요약 (Summary)

이번 랩에서 배운 내용을 복습해 보겠습니다.

  • 산술 연산자 사용
  • 관계 연산자 사용
  • 논리 연산자 사용
  • 할당 연산자 사용

이번 랩에서는 Go 에서 연산자를 사용하는 방법에 대해 논의했습니다. 다양한 연산자와 그 사용법을 시연했습니다.

OSZAR »