기타
go언어 따라해보기(1) - 표준 입출력, if, switch.. case, for, 함수사용법
카멜레온개발자
2021. 12. 4. 21:36
강좌 보면서 따라한 내용을 혹시나 해서 기록해본다
package main //이 패키지의 이름은 main이다
//main이라는 package는 '프로그램 시작점'이라는 약속
//아래의 package를 가져와서 포함한다
//fmt를 포함한 아래 목록은 표준 package
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
//func : 함수
//main 함수는 시작점이다
func main() {
fmt.Print("Input Number 1 : ")
//표준 입력을 받기 위한 객체
reader := bufio.NewReader(os.Stdin)
//input string과 error를 리턴 받는데, error는 변수에 담지 않는다
line, _ := reader.ReadString('\n')
//공백 제거
line = strings.TrimSpace(line)
//정수 변환
n1, _ := strconv.Atoi(line)
fmt.Print("Input Number 2 : ")
line, _ = reader.ReadString('\n')
line = strings.TrimSpace(line)
n2, _ := strconv.Atoi(line)
fmt.Printf("Input Number : %d %d", n1, n2)
fmt.Print("Input Operator : ")
line, _ = reader.ReadString('\n')
line = strings.TrimSpace(line)
if line == "+" {
fmt.Printf("%d + %d = %d", n1, n2, n1+n2)
} else if line == "-" {
fmt.Printf("%d - %d = %d", n1, n2, n1-n2)
} else if line == "*" {
fmt.Printf("%d * %d = %d", n1, n2, n1*n2)
} else if line == "/" {
fmt.Printf("%d / %d = %d", n1, n2, n1/n2)
} else {
fmt.Println("Bad Input!!!")
}
switch line {
case "+":
fmt.Printf("%d + %d = %d", n1, n2, n1+n2)
case "-":
fmt.Printf("%d - %d = %d", n1, n2, n1-n2)
case "*":
fmt.Printf("%d * %d = %d", n1, n2, n1*n2)
case "/":
fmt.Printf("%d / %d = %d", n1, n2, n1/n2)
default:
fmt.Println("Bad Input!!!")
}
}
go는 case 문 안에 수식이 들어가도 되고,
switch에 공백이 있으면 true가 기본 값이다
package main
import "fmt"
func main() {
x := 30
switch {
case x > 20:
fmt.Println("X는 20보다 크다")
case x < 20:
fmt.Println("X는 20보다 작다")
default:
fmt.Println("Dfault")
}
}
for 문은 다음과 같이 쓴다
package main
import "fmt"
func main() {
i := 0
for i < 10 {
if i > 0 {
fmt.Print(",")
}
fmt.Print(i)
i++
}
fmt.Println()
for j := 0; j < 10; j++ {
if j > 0 {
fmt.Print(",")
}
fmt.Print(j)
}
fmt.Println()
}
조건문에 공백이면 true이다(무한루프)
break, continue등도 사용가능
package main
import "fmt"
func main() {
i := 0
for {
if i > 0 {
fmt.Print(",")
}
fmt.Print(i)
i++
if i > 9 {
break
}
}
fmt.Println()
for j := 0; j < 10; j++ {
if j == 3 {
continue
}
if j > 0 {
fmt.Print(",")
}
fmt.Print(j)
}
fmt.Println()
}
* 함수
더보기
//함수명(변수 타입, ) 리턴값
//리턴은 복수개 가능
func add(x int, y int) int {
return x + y
}
func main() {
// for i := 0; i < 10; i++ {
// fmt.Printf("%d + %d = %d\n", i, (i + 2), add(i, i+2))
// }
a, b := func1(2, 3)
fmt.Println(a, b)
}
//같은 타입이면 마지막에 붙여도 됨
func func1(x, y int) (int, int) {
func2(x, y)
return y, x
}
func func2(x, y int) {
fmt.Println("func2", x, y)
}