레이블이 Go언어의 if문 for문인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Go언어의 if문 for문인 게시물을 표시합니다. 모든 게시물 표시

20241227

Go언어의 IF 문, FOR 문 - Golang

Go언어의 IF 문, FOR 문


if문 - 조건이 맞으면 {} 블럭안 실행.( if는 특정 조건만 검사하는 경우에 적합함)
         단, '{' 시작하는 블럭이 if 문과 같은 라인에 있어야 함.
         c언어에서 사용하는 삼항 연산자(? :)를 사용할수 없슴(가독성을 위해서 지원하지 않음).
         조건식 ()가 필요없슴.- if문에는 소괄호가 필요가 없슴.
         Boolean 식으로만 표현 - 참(True) 또는 거짓(False)
         Boolean식은 논리 연산(&&, ||, !)이나 비교 연산(==, !=, <, >, <=, >=)에서 사용함.
         Boolean식은 조건문 if, for, switch 에서 주로 사용함.
         논리 판단: 특정 조건을 만족하는지 판단할 때 사용(크냐,작냐,같냐,다르냐,참이냐..)
         if문에 조건식 이전에, if문 안에서만 사용할수 있는 문장을 추가할수도 있슴.

for i := 0; i < 10; i++ { // for문: 0~9까지의 숫자안에서 루프해라.
if i%2 == 0 { // if문: 짝수만 출력해라
fmt.Println(i) // 출력: 2, 4, 6, 8
}
}

for문: i가 0일때 부터, i가 10보다 작을때 까지, i를 +1 하며, 루프
          숫자 0 부터, 9까지 루프로 체크 하고
if문: i를 2로 나눈 나머지값이 0과 같으려면, 짝수여야 하기에, 
       2,4,6,8 이 출력됩니다. 

if true {       // 참일때만 실행하는 if문
}
if false {       // 거짓일때만 실행하는 if문
}

if a == 1 {                   // a 가 1과 같으면, 참이면
    println("일")
} else if a == 2 {         // 1은 아니고, 만일 2와 같다면
    println("이")          // fmt 없이, println 소문자로 사용은, go의 기본 내장함수라서
} else {                       // else - 1도 2도 아닌 기타면
  fmt.Println("몰라")  // fmt없는 경우는, 디버깅 및 간단한 출력테스트만 권장함.
}                                 // fmt를 이용해서 출력시, Println함수에서 P는 대문자여야 함.
                                  // fmt의 함수를 이용한 출력을 go언어는 권장합니다.

if ok1 := i * 3; ok1 < ok2 {
fmt.Println(ok1)
}
      // if문에 조건식 이전에, if문 안에서만 사용할수 있는 문장을 추가할수도 있슴.
      // 위의 예제에서 ok1 은, if문을 벗어난 경우 에러가 발생됩니다. if문 안에서만 사용함.

FOR 문- Go언어에서 for 로 루프를 사용합니다.
for문은 반복작업을 표현하는데 주로 사용합니다. 반복과 조건을 사용하려면, for문을 사용함.
- 반복을 실행하며, 반복하는 중간에 조건을 평가할수도 있슴.(조건 평가는 if 문을 사용)
 
for i := 0; i < 10; i++ { //  for 초기값; 조건식; 후처리문(증감식) {} 블럭
}

            

for {       // 무한루프
}
for x := 1; true; x++ {       // 무한루프
}
for a < 50 {  //조건식
}

for 루프의 range 문은 슬라이스(slice), 맵(map), 배열(array), 문자열(string), 채널(channel) 등의 데이터를 순회(iterate)할 때 사용됩니다.

for index, value := range collection {
// 반복할 코드
}

index: 현재 반복의 인덱스 (또는 ).
value: 현재 반복의 .
collection: 순회하려는 데이터 구조.

슬라이스 순회
nums := []int{10, 20, 30, 40}
for index, value := range nums {
fmt.Printf("인덱스: %d, 값: %d\n", index, value)
}

결과: 인덱스: 0, 값: 10 
         인덱스: 1, 값: 20 
         인덱스: 2, 값: 30 
         인덱스: 3, 값: 40

맵순회
fruits := map[string]string{"a": "apple", "b": "banana", "c": "cherry"}
for key, value := range fruits {
fmt.Printf("키: %s, 값: %s\n", key, value)
}
결과:    키: a, 값: apple
            키: b, 값: banana
            키: c, 값: cherry

문자열 순회
str := "안녕"
for index, char := range str {
fmt.Printf("인덱스: %d, 문자: %c\n", index, char)
}
인덱스는 바이트 기준입니다. 한글처럼 UTF-8로 인코딩된 문자는 바이트 단위로 계산됩니다
결과:    인덱스: 0, 문자: 안
            인덱스: 3, 문자: 녕

값만 사용하기 (_를 활용)
nums := []int{10, 20, 30, 40}
for _, value := range nums {
fmt.Println(value)
}
결과:      10
              20
              30
              40

인덱스만 사용하기
값이 필요 없으면 _를 사용해 생략할 수 있습니다.
nums := []int{10, 20, 30, 40}
for index := range nums {
fmt.Println(index)
}

결과:       0
               1
               2
               3

range는 슬라이스, 맵, 문자열, 배열 등을 순회할 때 사용합니다.
필요하지 않은 값이나 인덱스는 _를 사용해 생략할 수 있습니다.
range는 Go 코드에서 데이터를 반복 처리할 때 가장 직관적이고 간단한 방법입니다.

For 문을 if 문처럼 사용하는 경우
for condition { // if와 비슷하게 동작
fmt.Println("조건이 참입니다!")
break // 조건이 참이더라도 반복하지 않도록 종료
}

For 문으로 조건 처리 하는 방법 
a, b, c := 5, 5, 1

for a == b && c == 1 { // 조건이 참일 때만 실행
fmt.Println("조건이 만족됩니다!")
break // 무한 루프를 방지하기 위해 추가
}


a, b, c := 5, 5, 1

for a == b && c <= 3 {
if c == 2 {
fmt.Println("조건 c == 2: 다음 반복으로 넘어갑니다.")
c++
continue // c == 2일 때 아래 코드 실행을 안하고, 다시 조건을 체크하로 감.
}

fmt.Printf("현재 c의 값: %d\n", c)
c++
}

fmt.Println("반복 종료")

continuebreak의 차이
continue: 현재 반복을 건너뛰고 다음 반복으로 이동.
                 continue 가 실행되면, 반복을 다시 시작 체크함.
                 continue 다음의 내용은 적용 안되고, 다시 반복을 체크하로 감.
break: 반복문을 완전히 종료.
            break 가 실행되면, 그 조건문(if. for)을 빠져 나감.
a, b, c := 5, 5, 1

for a == b && c <= 5 {
if c == 3 {
fmt.Println("c == 3: 반복을 완전히 종료합니다.")
break // 반복문 종료- 조건문을 완전히 빠져 나감
}

if c == 2 {
fmt.Println("c == 2: 다음 반복으로 넘어갑니다.")
c++
continue // 다음 반복으로 건너뜀-아래 조건은 실행 안하고, 다시 조건 체크로 이동
}

fmt.Printf("현재 c의 값: %d\n", c)
c++

c++ 과 ++c 차이점
c++ = (후위 증가 연산자), 변수 c의 값을 먼저 사용하고, 그 다음에 1을 증가시킴
int c = 5;
int result = c++; // result에 5가 저장되고, c는 6이 됩니다.
먼저 사용한 다음에 증가를 합니다.

++c = (전위 증가 연산자), 변수 c의 값을 먼저 1 증가시키고, 그 증가된 값을 사용함.
int c = 5;
int result = ++c; // c는 6이 되고, result에 6이 저장됩니다.
먼저 증가를 시키고, 사용을 합니다.

c = c + 1
int c = 5;
c = c + 1; // c는 6이 됩니다.
값에 1을 더하고, 다시 할당합니다. 증가만 시킵니다.