utterances:
	repo: Ksanbal/devksanbal.site

<aside> 💡 들어가기에 앞서, 이 글은 go의 문법을 정리한 것이지 언어를 처음 배우는 사람을 위한 글이 아님을 밝힙니다!

</aside>

변수


GoLang의 변수는 크게 2가지 const(상수), var(변수)로 이루어진다.

Function


// 기본적인 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 해도 상관은 없음!
}

defer

함수가 종료되면 실행되는 명령어

func naked(name string) (lenght int, uppercase string) {
	defer fmt.Println("I'm done!")

	lenght = len(name)
	uppercase = strings.ToUpper(name)
	return
}

반복문 For


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
}