본문 바로가기
개발/GO 겅부

GO 겅부 1일차 변수 및 타입 관련

by 밥버검 2018. 11. 15.
반응형

변수


Go는 변수를 할당하고 사용을 안하면 에러 이것때문에 삽질좀... 내잘못인지?

초기값 지정안하면 타입에 해당하는 초기값으로 셋팅


변수 선언방식 Short Assignment Statement (:=)

1.var i = 1 -> i := 1

2.var 생략가능

3.함수(func)내에서만 사용가능

  함수 밖에서는 var를 사용해야함

  Go에서 변수와 상수 함수 밖에서도 사용가능



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package main
 
import (
    "reflect"
)
 
func main() {
 
    var s string = "Hello World\n"
    println(s)
 
    //초기값은 순서대로 변수에 할당
    var i, j, k int = 123
 
    println(i)
    println(j)
    println(k)
 
    //초기값 지정안하면  Go는 Zero Value 기본적으로 할당
    var test int
    println(test)
 
    //false 로 초기값 셋팅
    var test_boolean bool
    println(test_boolean)
 
    //"" 초기값 셋팅
    var test_string string
    println(test_string)
 
    //타입 추론
    var int_val = 1
 
    println(reflect.TypeOf(int_val))
 
    /*변수 선언방식 Short Assignment Statement (:=)
        1.var i = 1 -> i := 1
        2.var 생략가능
        3.함수(func)내에서만 사용가능
          함수 밖에서는 var를 사용해야함
          Go에서 변수와 상수 함수 밖에서도 사용가능
    */
    short_i :=11
    println(short_i)
 
    //상수 const 선언
    const const_c int = 10
    println(const_c)
 
    const const_s string = "Hi"
    println(const_s)
 
    //여러 개의 상수들 묶어서 지정 가능
    const (
        Visa = "Visa"
        Master = "MasterCard"
        Amex = "American Express"
    )
    println(Visa,Master,Amex)
 
    //상수값을 0부터 순차적으로 부여
    //iota = identifier 사용 가능
    const (
        Apple = iota
        Grape
        Orange
    )
 
    println(Apple,Grape,Orange)
 
 
    /**
        Go 키워드
        break        default            func        interface        select
        case         defer            go            map                struct
        chan         else            goto        package            switch
        const        fallthrough        if            range            type
        continue    for                import        return            var
    */
}
 
cs


타입

1.부울린 타입 bool

2.문자열 타입 string: string은 한번 생성되면 수정될 수 없는 Immutable 타입임

3.정수형 타입
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr

4.Float 및 복소수 타입
float32 float64 complex64 complex128

5.기타 타입
byte:uint8과 동일하며 바이트 코드에 사용
rune:int32과 동일하며 유니코드 코드포인터에 사

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package main
 
import "fmt"
 
//Go 데이터타입
/*
    1.부울린 타입
        bool
    2.문자열 타입
        string: string은 한번 생성되면 수정될 수 없는 Immutable 타입임
    3.정수형 타입
        int int8 int16 int32 int64
        uint uint8 uint16 uint32 uint64 uintptr
    4.Float 및 복소수 타입
        float32 float64 complex64 complex128
    5.기타 타입
        byte:uint8과 동일하며 바이트 코드에 사용
        rune:int32과 동일하며 유니코드 코드포인터에 사
 */
func main() {
 
    //문자열 리터럴 (''),("") 표현
    //('') 둘러싸인 문자열을 그대로의 값을 표현
    //("") 이중인용부호 로 싸인 문자열은 Interpreted String Literal
    //복수라인에 걸쳐 쓸수 없으며 인용부호 안의 Escape 문자열 해석 \n -> NewLine
    rawLiteral := `아리랑\n
아리랑\n
  아라리요`
 
    // Interpreted String Literal
    interLiteral := "아리랑아리랑\n아리리요"
    // 아래와 같이 +를 사용하여 두 라인에 걸쳐 사용할 수도 있다.
    // interLiteral := "아리랑아리랑\n" +
    //                 "아리리요"
    // 이중인용부호를 이용해 문자열을 여러 라인에 걸쳐 쓰기 위해서는 + 연산자 이
 
    fmt.Println(rawLiteral)
    fmt.Println()
    fmt.Println(interLiteral)
 
    //3.데이터 타입 변환
    // T(v)로 표현 T는 변환하고자 하는 타입을 표시, v는 변환될 값(value)
 
    var i int = 100
    //명시적 형변환
    //암묵적 형변환시에는 런타임 에러가날수도 있음?
    var u uint = uint(i)
    var f float32 = float32(i)
    println(f, u)
 
    str := "ABC"
    bytes := []byte(str)
    str2 := string(bytes)
    println(bytes, str2)
 
}
 
cs


반응형

댓글