Let's Golang - 2

donchanee·2021년 1월 26일
0

Let's Golang

목록 보기
2/6
post-thumbnail

일단 변수와 상수.

Golang에서 변수를 선언하는 방법은 다음과 같다.

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  

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

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

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

const a = 1
const s = "Bit" // 타입을 Go에서 자동적으로 추론

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

이렇게 실행하면 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)) // 불가능

0개의 댓글