본문 바로가기
  • hazard_dev@__
  • hazard_dev@__
Go

[Go#4] Go언어 For, if_(반복문, 제어문) 이해하기!!!

by Hazard3_o00sung 2021. 1. 7.
728x90

구글의 강력한 오픈소스 언어 Go언어입니다

 

Powerful Concurrency Language Go

  저번 시간에 패키지와 함수에 대해서 간략하게 알아보았습니다. 이번 시간에는 반복문과 제어문에 대해서 학습해보도록 하겠습니다. 다른 프로그래밍 언어에 대해서 학습을 해보신 분이라면 아실 수 있겠지만, 대표적인 반복문에는 for, while이 있으며, 제어문에는 if 외에도 많은 문법에서 제어문의 형식이 들어갑니다. 컴퓨터 내부에서 일어나는 모든 논리적 연산의 인간이 사용할 수 있는 고급어로 바뀌었으니, 이러한 구문들에 대해서 학습을 안 할 수가 없죠!! 패키지와 함수에 대한 글을 읽고 오지 못하셨다면, 아래 링크를 타고 들어가셔서 확인하시길 바랍니다!

 

hazarddev.tistory.com/66

 

[Go#3] Go언어 패키지, import-export, function 이해하기!!!

Powerful Concurrency Language Go 저희 저번 시간에는 고 언어의 변수의 타입과 타입 캐스팅에 대해서 알아보았습니다. 물론 만약 못 보신 분이 계시다면 아래 링크를 통해서 보고 오시는 것을 추천드립

hazarddev.tistory.com

 

For Loop

  고는 반복문 중 For문법만을 가집니다! For 반복문의 문법은 아래의 코드와 같습니다.

 

for <*initialize variable>; <variable condition>; <end_each_loop_Operand> {
	...
}

 

첫번째로 오는 문법은 변수의 초기화입니다. 두 번째 표현은 초기화된 변수의 조건문입니다. 세 번째는 한번 반복할 때마다 초기화된 변수의 동작입니다. 두 번째의 조건문이 false이면, 반복을 당연히 끝내게 될 것입니다. 아래의 코드처럼 사용할 수 있겠죠.

 

package main

import "fmt"

func forGrammar(x int) int {
	for i:= 0; i < 10; i++ {
		x += i
	}
	return x
}

func main() {
	var foo int = forGrammar(10)
	fmt.Println(foo)
}

 

앞서 배운 함수를 통해서 해결해본다면, 위와 같습니다. 함수의 리턴 값을 변수의 초깃값으로 초기화하는 것 또한 가능합니다. 어려운 일은 아니죠. 실습 해보시는 것을 추천드립니다.

 

또한, 초기화구문과 마지막 연산 구문은 굳이 붙지 않아도 상관없습니다. 그러니까 고 언어에서는 while문은 존재하지 않는다고 말씀드렸습니다. 물론 그러한 점에는 이유가 존재하겠지만, 아무래도 굳이 while문을 사용하지 않아도 되는 게 for구문도 반복문, while구문도 반복문인데 굳이 두 개가 필요할까요? 아래처럼 작성하면 while구문을 for구문처럼 사용하는 것이 아닐까 생각합니다. 

 

package main

import "fmt"

func forGrammar(x int) int {
	var i int = 0
	for ; i < 10; {
		i++
		x += i
	}
	return x
}

func main() {
	var foo int = forGrammar(10)
	fmt.Println(foo)
}

 

하지만 굳이 세미콜론을 앞 수식어로 두지 않아도 상관없습니다. 그렇게 된다면 완전한 while문처럼 활용이 가능하다 이말입니다.

 

package main

import "fmt"

func forGrammar(x int) int {
	var i int = 0
	for i < 10 {
		i++
		x += i
	}
	return x
}

func main() {
	var foo int = forGrammar(10)
	fmt.Println(foo)
}

 

오히려 while문이 존재하지 않고 For구문만으로 while문처럼의 작성이 되는 것이 문법의 키워드를 외우고 이해하는데 좀 더 도움이 됩니다. 

 

If Condition

if문은 다들 아시겠지만 프로그램 실행 중 if구문을 만나면 프로그램의 코드 경로가 우회할 수 도 있고, 직진할 수도 있습니다. 그러니까 if문 내의 조건을 통해서 아래의 코드가 작동하냐 작동하지 않냐 이 차이란 말입니다. 기본적인 문법은 아래와 같습니다.

 

if <*condition_block> { ... } else if <*condition_block> { ... } else { ... }

 

다른 언어와 별 다른 차이가 없는 문법입니다. 제가 예제 코드를 많이 제시해드렸지만, 다시 한번 되새기도록 하겠습니다!

 

package main

import (
	"fmt"
)

func ifGrammar(x int) string {
	if x > 10 {
		return "hello"
	} else if (x < 10){
		return "world"
	}else {
		return "beep"
	}
}

func main() {
	fmt.Println(ifGrammar(5))
}

 

아래와 같은 사용도 가능합니다. 

 

package main

import (
	"fmt"
)
func add(x int) int{
	return x + 10
}

func ifGrammar(x int) string {
	if foo := add(x); foo > 10 {
		return "If"
	} else {
		return "Else"
	}
}

func main() {
	fmt.Println(ifGrammar(5))
}

 

if문의 조건 블록 실행 이전에 함수라던지, 연산 등을 우선 시작할 수 있습니다. 그렇게 되면 마치 for구문과 마찬가지로 동작할 수 있겠죠? 위의 변수들은 if문이 끝나는 동시에 메모리가 해제되기 때문에 이점에 유의해서 사용하시기 바랍니다!

 

간단하게 for, if문에 대해서 알아보았는데, 난도가 높은 문법이 아니고 프로그래밍 언어의 아주 기본이 되는 문법이기 때문에 쉬워서 그냥 점프하지 마시고 유의해서 잘 봐주셨으면 좋겠습니다!! 

 

글 잘 읽으셨다면 공감 하트 부탁드립니다!!!😊😊😊😊

 

 

댓글로 문의, 피드백, 질문 모두 환영합니다!!

 

감사합니다!😍😍😍😍😍🥰🥰

 

다음 강좌 ----->

hazarddev.tistory.com/69

 

[Go#5] Go언어 Switch, Defer 문법!!!

Powerful Concurrency Language Go 저번 시간에는 고 언어의 for, if에 대해서 알아보았습니다. 이번 시간에는 switch, defer에 대해서 학습을 해볼 예정입니다. 일단 앞서 설명드렸듯이, 고 언어는 C언어와 유

hazarddev.tistory.com

 

728x90

댓글