package main
import (
"fmt"
"strings"
)
var name1 string = "outside func"
/*Go 에서는 전역변수는 축약형이 사용 불가능하고, func 안에서는 축약형(:=)이 사용 가능하다.
*축약형 사용 시 자동으로 변수 타입을 정해주며, 변경이 불가능하다.
*/
func main() {
name2 := "inside func"
fmt.Println("variable test1 outside " + name1)
fmt.Println("variable test2 inside " + name2)
fmt.Println(multiply(2, 2))
totalLength, upperName := lenAndUpper("five words")
fmt.Println(totalLength, upperName)
repeatMe("nico", "hyun", "dal", "marl", "flyn")
superAdd(1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 9)
fmt.Println(canIDrink(20))
}
//Go 에서는 함수를 만들때 인풋과 아웃풋의 타입을 정해주어야 한다. -> 빠르게 처리하기 위해
func multiply(a, b int) int {
return a * b
}
//변수명(인풋)(아웃풋)
func lenAndUpper(_name string) (int, string) {
return len(_name), strings.ToUpper(_name)
}
//인풋 변수의 갯수제한을 없애려면 타입앞에 ...을 적으면 된다.
func repeatMe(words ...string) {
//Go에 있는 기능으로 함수가 끝났을때 무언가를 실행하게 할 수 있다.
defer fmt.Println("repeatMe done")
fmt.Println(words)
}
//Go의 루프는 모든게 for로 통일되었다.
func superAdd(_numbers ...int) int {
total := 0
//range를 사용한 루프문
for _, num := range _numbers {
total += num
}
//range를 사용하지 않은 같은 루프문
// for i := 0; i < len(_numbers); i++ {
// total += _numbers[i]
// }
fmt.Println(total)
return 1
}
func canIDrink(_age int) bool {
//Go에서 특이한 부분은 if 조건문 안에 변수를 선언할 수 있는데, 이런식으로
//선언하고 사용하면 된다. 또한 if문은 return과 함께하기 때문에 else가 필요없다? 라고 한다.
// if koreanAge := _age + 1; koreanAge < 20 {
// return false
// }
// return true
//switch 문
switch koreanAge := _age + 1; {
case koreanAge <= 20:
return false
}
return true
}
설명은 소스코드에 있는 주석으로 대체합니다.
노마드 코더의 무료 고 강습에서 if-switch 까지의 강의 내용입니다.
'GO' 카테고리의 다른 글
노마드와 함께하는 고 Study -5 Goroutine (0) | 2020.03.24 |
---|---|
노마드와 함께하는 고 Study -4 URL 체커 (0) | 2020.03.23 |
노마드와 함께하는 고 Study -3 메소드 (0) | 2020.03.23 |
노마드와 함께하는 고 Study -2(포인터 연습문제) (0) | 2020.03.23 |
노마드와 함께하는 고 Study -2 (포인터) (0) | 2020.03.19 |