1.return 생략
func lenandvalue(word string) (len_s int,upper_s string) {
len_s = len(word)
upper_s = strings.ToUpper(word)
return
}
func main() {
len_s,upper_s := lenandvalue("logcat")
fmt.Println(len_s , " " , upper_s)
}
위의 lenandvalue 함수에서는 return 뒤에 아무것도 없다.
하지만 실행시켜보면
6 LOGCAT
이 잘 나온다.
함수 이름 부분에 return 값의 타입을 미리 적는 go 언어의 특징때문에 return 값까지 미리 적을 수 있는것 같다고 감히 추축해본다.
위에서 미리 변수를 선헌한 것이기 때문에
len_s = len(word) 을
len_s := len(word) 로 작성하는 일이 없어야 한다.
2.defer
func lenandvalue(word string) (len_s int, upper_s string) {
defer fmt.Println("func is over")
len_s = len(word)
upper_s = strings.ToUpper(word)
return
}
결과
func is over
6 LOGCAT
6 LOGCAT
defer이란 함수가 종료된 후 실행되는 명령이다.
그림을 열거나 파일을 여는 함수를 사용할때 같이쓰면 매우 편리하다
함수가 종료된 후 실행된다고 말했지만 사실 함수가 성공적으로 종료되면 defer부터 실행하고
그다음에 return값이 출력된다.
3.for
go에서는 반복문이 for 하나이다 for in 이나 다른 for 파생형들이 없다
func sp(words ...string) int {
defer fmt.Println("func is over")
for index, value := range words {
fmt.Println(index, " ", value)
}
return 0
}
func main() {
fmt.Println(sp("aa", "bb", "cc", "dd", "ee", "ff"))
}
실행결과
0 aa
1 bb
2 cc
3 dd
4 ee
5 ff
func is over
0
1 bb
2 cc
3 dd
4 ee
5 ff
func is over
0
for을 쓰는 방법에는 c나 java처럼
for i := 0 ; i <= k ; i++
로 쓸 수도 있지만
range를 사용하는 것이 편리하고 많이 사용될 것이다.
range는 오직 for에서만 쓸수 있는 함수이고
인덱스 와 값 두가지를 리턴한다
4.if, else
func test_d(val int) string {
if val%2 == 1 {
return "obb number"
} else {
return "even number"
}
}
func main() {
fmt.Println("13 is ", test_d(13))
}
결과
13 is obb number
파이썬 처럼 소괄호 없이 바로 조건문을 작성한다.
처음 알았는데 odd number이 홀수라는 뜻이고 even number가 짝수라는 뜻이라고 한다.
if ans := ""; val%2 == 1 {
ans = "odd number"
return ans
} else {
ans = "even number"
return ans
}
go에서는 이처럼 if 조건줄에서 변수를 생성할 수 있다.
이 변수는 if 안에서만 사용 가능하다.
그냥 미리 변수 하나를 생성하지 않고 이렇게 사용하는 이유는
ans라는 변수가 무엇을 위한 변수인지 한눈에 보여줄 수 있기 때문이다.
5.switch
우리가 쓰던대로 쓰면 된다.
알던거랑 크게 다를거 없다.
func test_d(val int) string {
switch {
case val == 0:
return "0"
case val%2 == 1:
return "odd number"
case val%2 == 0:
return "even number"
}
return ""
}
func main() {
fmt.Println("13 is ", test_d(13))
}
결과
13 is odd number
'go 학습' 카테고리의 다른 글
Golang으로 웹 크롤러(web crawler) 만들기(feat chatGTP) (0) | 2023.02.14 |
---|---|
go 기초학습4(페키지 export, 생성자, 메소드 , error) (0) | 2023.01.09 |
go 기초 학습3 (pointer, array, slice, map, sturct) (0) | 2023.01.05 |
go 언어 기초1(설치, 상수와 변수, 함수) (0) | 2023.01.02 |