'안가르챠줌'인 줄 알았는데 나왔다, 변수!

변수 선언

<예제 코드>

package main

import "fmt"

var x, y, z int
var c, python, java bool

func main() {
    fmt.Println(x, y, z, c, python, java)
}

<실행 결과>

0 0 0 false false false

변수 선언시 var라는 키워드를 사용한다.
왠지 자바스크립트같아 친숙하다. 하지만 데이터 타입을 마지막에 명시하는 것은 잊지 않는다.(뒤에 데이터 타입을 지우고 실행하면 아래처럼 문법 에러가 난다.

<실행 결과>

prog.go:5:12: syntax error: unexpected newline, expecting type
prog.go:6:20: syntax error: unexpected newline, expecting type

int타입에 경우 값을 할당하지 않으면 0이 자동할당되고, bool타입의 경우 false가 자동할당된다.

예제 만드신 분이 c, python, java가 false라고 생각한 것 같다.

변수 초기화

<예제 코드>

package main

import "fmt"

var x, y, z int = 1, 2, 3
var c, python, java = true, false, "no!"

func main() {
    fmt.Println(x, y, z, c, python, java)
}

<실행 결과>

1 2 3 true false no!

선언하면서 동시에 초기화할 수 있다.
변수 x, y, z는 선언하면서 데이터 타입을 int로 명시했지만,
변수 c, python, java는 데이터 타입을 명시하지 않고 생략했다.
bool, bool, string의 값을 그냥 넣어주니 초기 자료를 통해 자동으로 인식하고 데이터타입을 설정해준다.

예제 만드신 분이 c는 프로그래밍 언어의 아부지라 봐준 거 같다.

##

package main

import "fmt"

func main() {
    var x, y, z int = 1, 2, 3
    c, python, java := true, false, "no!"

    fmt.Println(x, y, z, c, python, java)
}

반드시 함수 안에서라는 조건(!)에서는 := 대입 연산자를 사용하여 var와 데이터 형식을 생략하고 짧게 줄여 쓸 수 있다.

출처

https://go-tour-kr.appspot.com/#11
https://go-tour-kr.appspot.com/#12
https://go-tour-kr.appspot.com/#13