utterances:
repo: Ksanbal/devksanbal.site
<aside> 💡 들어가기에 앞서, 이 글은 go의 문법을 정리한 것이지 언어를 처음 배우는 사람을 위한 글이 아님을 밝힙니다!
</aside>
GoLang의 변수는 크게 2가지 const(상수), var(변수)로 이루어진다.
const name string = “Sanbal”
var name string = “Sanbal”
name := “String”
:=
을 쓸때 타입이 지정되기 때문에 나중에 다른 type을 넣을 수 없다.// 기본적인 function의 형태
func len(name string) int {
return len(name)
}
// 입력을 여러개 받는 경우
func words(words ...string) {
// 입력받은 값을 list 형태로 나타낸다.
fmt.Println(words)
}
// 반환을 여러개하는 경우, python처럼 가능하다.
func lenAndUpper(name string) (int, string) {
return len(name), strings.ToUpper(name)
}
// -> namelen, up := lenAndUpper('sanbal')
// naked func
// 미리 반환할 변수를 지정해 return될 때 해당 변수를 반환한다.
func naked(name string) (lenght int, uppercase string) {
// 위에서 이미 변수가 할당됬으니까 :=와 같은 식은 쓰지 않도록 하자!
lenght = len(name)
uppercase = strings.ToUpper(name)
return
// return lenght, uppercase 해도 상관은 없음!
}
함수가 종료되면 실행되는 명령어
func naked(name string) (lenght int, uppercase string) {
defer fmt.Println("I'm done!")
lenght = len(name)
uppercase = strings.ToUpper(name)
return
}
Go에서 반복문은 for 하나뿐이다. map, forEach와 같은 기능은 없고 딱 for만~~(심플해서 오히려 섹시해)~~
for문을 위해서 range
가 있는데 python에서 enumerate() 같은 느낌으로 작동한다.
func superAdd(numbers ...int) int {
total := 0
// range를 이용한 방법
for i, number := range numbers {
total += number
}
// 위와같이 쓰면 i에 빨간줄이 생기는데, 사용하지 않는 변수가 있으면 오류가 난다;;;;;
// 그래서 _를 이용해서 무시해버릴 수 있음! (python에서는 _를 변수로 쓰는 명시적인 느낌이였는데, 얘는 진짜로 못쓴다;;;)
for _, number := range numbers {
total += number
}
// 물론 전통적인 방식도 지원한다.
for i := 0; i< len(numbers); i++ {
fmt.Println(i, numbers[i])
}
return total
}