ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자료형 및 키워드
    Language/Golang 2023. 2. 7. 21:20

    Go 자료형과 키워드

    자료형

    자료형 저장범위 설명
    uint8 0 ~ 255 부호 없는 8비트 정수형
    uint16 0 ~ 65,535 부호 없는 16비트 정수형
    unit32 0 ~ 4,294,967,295 부호 없는 32비트 정수형
    uint64 0 ~ 18,446,744,073,709,551,615 부호 없는 64비트 정수형
    uint   32비트 시스템에서는 uint32, 64비트 시스템에서는 uint64
    int8 -128 ~ 127 부호 있는 8비트 정수형
    int16 -32,768 ~ 32,767 부호 있는 16비트 정수형
    int32 -2,147,483,648 ~ 2,147,483,647 부호 있는 32비트 정수형
    int64 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 부호 있는 64비트 정수형
    int   32비트 시스템에서는 int32, 64비트 시스템에서는 int64
    float32   IEEE-754 32비트 부동소수점, 7자리 정밀도
    float64   IEEE-754 64비트 부동소수점, 12자리 정밀도
    complex64   float32 크기의 실수부와 허수부로 구성된 복소수
    complex128   float64 크기의 실수부와 허수부로 구성된 복소수
    uintptr   uint와 같은 크기를 갖는 포인터형
    bool   참, 거짓을 표현하기 위한 8비트 자료형
    byte   8비트 자료형
    rune   유니코드 저장을 위한 자료형, 크기는 int32와 동일
    string   문자열을 저장하기 위한 자료형

     

    키워드

    키워드 목록

    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

     

    키워드별 사용처

    C/C++ 및 Java 와 크게 다른 키워드만을 안내합니다.

     

    func

    함수 명시에 대한 기본 키워드.

     

    interface

    어떠한 값이든 될 수 있는 항목에 대한 지정 키워드

     

    select

    채널(chan) 에 대한 동기화, 통신 등에 사용되는 키워드

     

    defer

    함수의 동작이 종료된 후 실행될 명령을 지정하는 키워드

    defer 문이 여러개라면 나중에 지정된 defer 부터 코드라인상 역순으로 실행

    package main
    
    import (
        "fmt"
    )
    
    func main() {
    
        defer fmt.Println("test")  // unlocking happens before surrounding function 
    
        for i := 0; i <= 3; i++ {
            defer fmt.Println(i)
        }
    
        defer fmt.Println("__",f())
    
        fmt.Println("End")
    
        return
    
    }
    
    
    func f() (result int) {
        defer func() {
            // result is accessed after it was set to 6 by the return statement
            result *= 7
        }()
        return 6
    }
    결과값
    
    End
    __ 42
    3
    2
    1
    0
    test

     

    go

    함수 호출을 비동기적으로 실행(goroutine)할 시 사용되는 키워드

    별도의 호출할 함수에 대한 지정포멧은 존재하지 않음

    package main
    
    import "fmt"
    
    func TestA(a int) {
        fmt.Println(a)
    }
    
    func TestB(b string) {
        fmt.Println(b)
    }
    
    func main {
        go TestA(10)
        go TestB("ABC")
    }

     

    struct

    필드들의 집합체

    C/C++ 의 구조체나 Java 의 Class 와 달리

    구조체 정의에 대한 함수 생성은 구조체 밖에 정의하며 구조체는 필드만을 소유

    type Test struct {
        A             int
        B             string
    }
    
    func (self Test) PrintA() bool {
        fmt.Println(self.A)
    }

     

    chan

    데이터를 송수신하며 통신할 수 있는 기능

     

    package

    패키지에 속한 상수, 유형, 변수 및 함수를 함께 선언하고 동일한 패키지의 모든 파일에서 액세스 할 수있는 하나 이상의 소스 파일로 구성

     

    fallthrough

    Go 에서 switch~case 동작시 case 문 끝에 break 가 없어도 자동적으로 switch 문을 빠져나오게 되며, 해당 기능을 차단하고자 할때 사용

     

    range

    map 이나 배열등을 반복할때 사용될 데이터를 지정하는 키워드

     

    type

    String, Int 와 같은 유형을 사용자 임의의 고유 유형을 지정하거나 interface 변수를 타입을 찾아 처리하고자 할때 사용

    type (
        B1 string
        B2 B1
        B3 []B1
        B4 B3
    )
    
    func ConvFloatToInt(x interface{}) int {
        if x == nil {
            return -1
        }
    
        switch x.(type) {
        case float64:
            return int(x.(float64))
        }
    
        return -1
    }

     

    import

    패키지 포함 키워드. Alias를 통해 다른 이름으로 사용 가능합니다.

    import "fmt" // fmt.Println()
    import f "fmt" // f.Println()
    import . "fmt" // Println()

     

    var

    변수에 대한 선언 키워드

     

    'Language > Golang' 카테고리의 다른 글

    Golang에서 Json 사용예시  (0) 2023.02.07
    CGO ( Golang With C++ ) 케이스별 설명 및 예시  (0) 2023.02.07
    문법 및 사용법 예시  (0) 2023.02.07
    Golang 설치 및 IDE  (0) 2023.02.07
    What is Golang?  (0) 2023.02.06
Designed by Tistory.