티스토리 뷰
이번에 go lang을 공부하면서 어떻게 공부하면 좋을까 생각하다가
알고리즘 문제를 풀면서 익숙해져 보자해서 시작하게 되었습니다.
알고리즘 문제를 풀면서 필요한 부분들을 점차 채워 갈 예정이고 부족한 부분이 많을 수 있습니다.
알고리즘 문제를 푸는데 있어서 필요한 부분을 정리 해봤습니다.
- 입력
- 출력
- 변수 선언
- 반복문
- 제어문
1.입력
go lang은 C언어와 많이 닮아 있는 것 같습니다. 사실 이렇게 느끼기 까지는 입출력 코드만 봐도 알 수 있습니다. print와 scan이 그것이죠. 먼저 입력 함수인 scan함수를 다뤄 보겠습니다. scan함수는 3가지가 있습니다.
scanf
c언어에서 자주 쓰는 형식이죠 입력 받을 타입을 정해서 그에 맞는 타입인 변수에 할당 해주는 방식 입니다.
package main
import "fmt"
func main() {
a := 0
fmt.Scanf("%d", &a)
fmt.Println(a)
}
scan
scan 함수는 c++ 의 cin과 비슷하다는 느낌을 받았습니다. 입력 받을 데이터의 형식을 신경 쓰지 않고 일단 어떠한 순서로 입력 받을 것인지 정하는 것이죠. scan함수는 " "(공백) 과 "\n"(개행)으로 구분 합니다 4번 입력 받는다고 할때 전부 공백이여도 되고 전부 개행이여도 되는고 섞여있어도 되는 것 이죠.
package main
import "fmt"
func main() {
a , b := "", ""
fmt.Scan(&a, &b)
fmt.Println(a, b)
}
scanln
scanln함수는 c언어의 scanf("%s")와 똑같이 개행 전까지 한 줄을 읽는 것입니다.
package main
import "fmt"
func main() {
a, b := "", ""
fmt.Scanln(&a, &b)
fmt.Println(a, b)
}
2.출력
출력에도 3가지가 있습니다 앞서 입력과 마찬가지로 Printf, Print , Println
Printf
C언어를 하셨다면 정말 익숙 하실 것입니다.
package main
import "fmt"
func main() {
a := 0
fmt.Scanf("%d", &a)
fmt.Printf("%d" , a)
}
이 함수는 개행이 없는 출력 함수 입니다. 한번에 여러개의 변수를 출력할 수 있고 여러개의 변수들은 " "(공백)을 이용하여 구분합니다.
package main
import "fmt"
func main() {
a := 0
fmt.Scanf("%d", &a)
fmt.Print(a,a)
fmt.Print(a,a)
}
//input : 10
//output : 10 1010 10
Println
위의 Print함수와 다른점은 각각의 Println는 개행을 한다는 점입니다.
3.변수 선언
go에서는 변수 선언을 하기위해 var 이라는 키워드 하나 만을 사용합니다. int | string | float 등 전부 일단 var로 선언을 하는 겁니다. 그리고 var a string, var b int 이렇게 뒤에 타입을 지정해줍니다. 변수는 변순데 어떤 변수 이러한 느낌이죠.
var a string
var b int
var c = 10
var ( aa int bb string )
var로 변수를 선언할 때 기본적인 방법은 var name type 순인데 선언과 동시에 초기화를 한다면 타입을 생략 할 수 있습니다. 괄호를 통해 여러개 선언도 가능합니다.
하지만 변수 선언 하는데도 뭔가 부담스럽죠 그래서 나온것이 Short Assignment Statement ( := ) 입니다.
func scope 안에서만 사용가능하고 전역변수는 이렇게 선언이 불가능 합니다.
a := 10
b := "string"
4.반복문
go lang에서의 반복문은 한가지 "for"뿐 입니다. while문? 없습니다. for 초기값; 조건절; 증감 { } 형태입니다. 괄호가 없죠 예시를 보면 편하실껍니다.
package main
import "fmt"
func main() {
for i:=0; i<10; i++ {
fmt.Print(i, " ")
}
}
5. 제어문
go lang의 제어문 if 입니다. 너무나 익숙한 키워드 이죠 쉽습니다. for문 과 같이 "("괄호 없이 조건절을 입력하시면 됩니다.
package main
import "fmt"
func main() {
for i:=0; i<10; i++ {
if i > 5 {
fmt.Print(i, " ")
}
}
}