donchanee

Let's Go! - 변수와 상수, 타입, 연산자 본문

프로그래밍/Go lang

Let's Go! - 변수와 상수, 타입, 연산자

donchanee 2019. 7. 14. 01:25
728x90
 

(1). Let's Go! - Hello world

package main func main() { println("Hello world!") } Go에 대해 배운 내용을 정리하는 시간이다. Go랭은 위와같은 형식으로 hello world를 출력한다. 패키지(package)는 코더에게 코드의 모듈, 재사용을 제공하..

double-tap.tistory.com


일단 변수와 상수.

 

Go 가 변수를 선언하는 방법은 다음과 같다.

var a int

var a, b, c int

var a, b, c int = 1, 2, 3  // 순차적으로 a = 1 , b = 2 , c = 3

var a = 1    // 할당되는 값의 타입을 자동적으로 추론할 수 있다.

a := 1       // 함수 내에서만 사용 가능한 Shortcut 같은 느낌. 이걸 제일 많이 쓰는듯

변수에 초기값을 설정해주지 않으면 각각 타입에 맞는 Zero Value가 할당된다.

 

Go 가 상수를 선언하는 방법도 다음과 같다.

const a int = 1
const s string = "Bit"

const a = 1
const s = "Bit" // 타입을 Go에서 자동적으로 추론할 수 있다. 여기선 string형으로 판단할 듯.

const (
    A = iota // 0
    B        // 1
    C        // 2
)

"iota" 라는 identifier를 A에 할당하면 값들이 순차적으로 1씩 증가된 값을 부여받는다.

const를 선언하고 중괄호 안에 여러개 값을 할당 가능하다.

 

package main
 
func main() {
    const (
	a = "a"
	b = "b"
	c = "c"
	d = iota
	e
	f
    )
    println(a,b,c,d,e,f)
}

이렇게 실행하면 a b c 3 4 5 이라는 결과값을 얻게 된다.


Go에는 (다른 언어와 마찬가지로) 여러가지 타입이 있다.

 

bool 타입, string , int , int8 16 32 64, uint, uint8 16 32 64, float32, float64, complex64, complex128, byte ...

 

설명은 필요 없을거라 생각한다.

 

문자열을 다룰 때, 큰따옴표와 작은따옴표 모두 사용할 수 있다.

 

작은따옴표는 작은따옴표 사이에 있는 문장 모두를 그대로 RAW하게 표현하고, 큰따옴표는 escape 문자열을 해석하고, 복수열으로 사용할 수 없다. 복수열으로 사용하고 싶으면 +를 사용하게 된다. 아래 예시를 보자

package main
 
import "fmt"
 
func main() {
    // 작은따옴표. 주석도 얄짤없음
    jageun := `가\n
나\n // RAW하게 인식해버림
다  라`
 
    // 큰따옴표
    keun := "가\n나\n" +
    	    "다  라"
 
    fmt.Println(jageun)
    fmt.Println()
    fmt.Println(keun)
}
 
/* 출력 */
가\n
나\n // RAW하게 인식해버림
다  라

가
나
다  라

 

형변환도 물론 가능하다.

package main
 
func main() {
    var i int = 305
    var u uint = uint(i)
    var f float32 = float32(i)  
    println(f, u)

    u = "string"  // 이런거 오류남
}

float형이 없고 무조건 float32, float64인가 봄. 그냥 그런걸로 알자.

형변환 명시적 지정 안해주면 오류난다. 그냥 무작정 넣을 수 없음.

 


연산자야 뭐 다른 언어랑 비슷하다.

산술 , 관계 , 논리 연산자 다 가능하다.

[ 사칙연산( + - * / % ) 되고, ++ , -- 가능하다. == , != , <= , >= 가능하다. && || ! 가능하다. ]

AND , OR, XOR 연산도 가능하고, 바이너리 쉬프트도 가능.

[ & | ^ << >> ]

할당연산자로 불리는 것도 다 가능하다

[ += -= *= %= <<= ]

포인터 연산자는 제공하지만, 포인터 연산은 제공하지 않는다.

q := 1
var p = &q
println(*p)	// 가능

println(*(p+1)) // 불가능

 


다음 글 : 조건문, 반복문

'프로그래밍 > Go lang' 카테고리의 다른 글

Let's Go! - 조건문, 반복문  (0) 2019.07.14
Let's Go! - Hello world  (0) 2019.07.13