보통 프로그래밍 언어를 배우다보면, 변수를 먼저 배우는 게 일반인데 바로 함수가 나온다;;

<예제 코드>

package main

import "fmt"

func add(x int, y int) int {
    return x + y
}

func main() {
    fmt.Println(add(1, 2))
}

<실행 결과>

3

위와 같이 Go에서는 C언어 스타일의 함수 선언과 달리 인자의 데이터 타입과 반환값의 데이터 타입이 변수명 뒤에 선언된다.

The "Clockwise/Spiral Rule" by David Anderson에 따르면, C언어는

int add(int x, int y)

"add is a function passing an x and y of an int returning to an int" 처럼 안쪽에서 바깥쪽으로 시계방향 나선형회전하면서 코드를 읽게 되는데,

Go's Declaration Syntax by Rob Pike에 보면 Go에서는 이러한 가독성이 떨어지는 문제를 개선하고자 왼쪽에서 오른쪽으로 읽어나갈 수 있게 문법을 채택하였다.

개인적으로 C언어 스타일이 언어의 고전이라 익숙하기도 하고, 전체적이고 포괄적으로 대상을 이해하는 언어체계를 가진 한국인에게는 C언어 스타일이 더 이해하기 쉬울 수도 있다는 생각인데, 사고의 흐름을 중시하는 영어권 사람들에겐 불편이 있었던 것 같다. (영어를 잘 못하는 나로썬 잘 와닿지 않는 대목이다.) 자주 들여다 보면서 익숙해져야 할 부분인 것 같은데, 현재로썬 매우 혼란스럽다. 영어권 프로그래머라도 C에 익숙하다면 적응을 잘 못하지 않을까?

출처

https://go-tour-kr.appspot.com/#7
https://go-tour-kr.appspot.com/#8