백구의 코딩찌개
  • [GO] Go 기초 문법 - 변수 선언 및 자료형
    2023년 12월 30일 02시 32분 25초에 업로드 된 글입니다.
    작성자: 코딩백구
    반응형

    변수 선언

    • -Go 에서 변수를 선언하는 방법은 여러가지 방식이 있으며, 선언만 하고 사용하지 않는 변수가 있는 경우 에러가 표시된다.
    • 기본적으로 var 키워드를 사용하여 변수를 선언한다. var 키워드를 앞에 적고 바로 뒤에 변수명, 그 뒤에 변수의 타입을 적는다.
      ex ) var name string
    • 변수를 선언함과 동시에 초기화를 할 수 도 있다.
      ex ) var name string = "Kim XX"
    • Go 에서 지원하는 단축 구문을 사용하여 변수를 선언할 수도 있다. (함수 내에서만 단축 구문 사용 가능)
      ex ) name := "Kim XX" 으로 줄여서 표현 가능. 
    • 변하지 않는 값, 상수를 선언하기 위해서는 const 키워드를 사용한다.
    • 아래에서는 지역 변수 선언 방법과 전역 변수 선언 방법 및 복수의 변수를 한번에 선언하는 예시를 보도록 하겠다.

    1. 지역 변수 선언

    package main
    
    import (
    	"fmt"
    	"reflect"
    )
    func main() {
    	var message string
    	message = "Hello, Go!"
    	// -> string
    	fmt.Println(reflect.TypeOf(message))	// string
    	
    	var hi string = "Hi"
    	// -> string
    	fmt.Println(reflect.TypeOf(hi))				// string
    
    	var whoAreYou = "Who are you?"
    	// -> string
    	fmt.Println(reflect.TypeOf((whoAreYou)))	// string
    
    	goodBye:="Goodbye"
    	// 타입이 명시되지 않은 경우, 컴파일 시 자동으로 타입을 추론해준다.
    	// -> string
    	fmt.Println(reflect.TypeOf(goodBye))	// string
    }

    2. 전역 변수 선언

    • 전역 변수 선언 시에는 단축 구문을 사용할 수 없다.
    package main
    
    import (
    	"fmt"
    )
    
    var global1 string
    var global2 string = "Hi Global"
    
    func main() {
    	global1 = "global1"
    	fmt.Println(global1, global2)		// global1, Hi Global
    }

    3. 여러개의 변수 선언

    • 변수 여러개를 선언하고 초기화 할 때에는 반드시 선언하는 변수와 초기화 하는 값의 개수가 같아야 한다.
    • 이때, 변수의 타입은 굳이 다 같을 필요는 없다.
    // 단축 구문 사용
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	message, hi, whoAreYou := "Hello Go!","Hi","Who are you?"
    	fmt.Println(message, hi, whoAreYou)
    }
    
    
    // var 사용
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var(
    		message string = "Hello"
    		hi string = "Hi"
    		whoAreYou string = "Who are you?"
    	)
    	fmt.Println(message, hi ,whoAreYou)
    }

    변수 재할당과 선언

    • var 로 초기화를 한 상태에서 재할당 하는것은 다른 언어와 같다.
    • 하지만, 단축 구문으로 재할당을 할 경우에는 새로운 변수가 하나라도 존재해야 기존 변수에도 재할당 작업을 수행하고, 그렇지 않으면 에러가 발생한다.
    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	message:= "before Change"
    	// message:= "after Change"	// error 발생
    	message = "after Change"		// 문제 x
    	message, hi:= "change", "Hi"	// 새로운 변수가 있으면 기존 변수에는 재할당
    	fmt.Println(message, hi)
    }

    자료형

    Go 에도

    1. 숫자형

    uint8 the set of all unsigned 8-bit integers (0 to 255) 1
    uint16 the set of all unsigned 16-bit integers (0 to 65535) 2
    uint32 the set of all unsigned 32-bit integers (0 to 4294967295) 4
    uint64 the set of all unsigned 64-bit integers (0 to 18446744073709551615) 8
    - - - -
    int8 the set of all signed 8-bit integers (-128 to 127) 1
    int16 the set of all signed 16-bit integers (-32768 to 32767) 2
    int32 the set of all signed 32-bit integers (-2147483648 to 2147483647) 4
    int64 the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807) 8
    - - - -
    float32 the set of all IEEE-754 32-bit floating-point numbers ±10^-453~±3.4 * 10^38 (소수점 7자리) 4
    float64 the set of all IEEE-754 64-bit floating-point numbers ±5 * 10^-324~±1.7 * 10^308 (소수점 15자리) 8
    - - - -
    complex64 the set of all complex numbers with float32 real and imaginary parts(복소수)   8
    complex128 the set of all complex numbers with float64 real and imaginary parts(복소수)   16
    - - - -
    byte alias for uint8   1
    rune alias for int32   4
    - - - -
    uint 32bit 시스템에서는 uint32, 64bit 시스템에서는 uint64와 같음   -
    int same size as uint   -
    uintptr an unsigned integer large enough to store the uninterpreted bits of a pointer value   -

    2. 문자열

    • string : 한번 생성되면 수정될 수 없는 Immutable 타입이며, `` 혹은 "" 으로 표현할 수 있다.

    3. Boolean

    • bool : true 및 false 를 의미한다.
    반응형

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

    [GO] GO 기초 문법 - 조건문  (0) 2024.01.22
    [GO] Go 란 무엇일까?  (0) 2023.12.28
    댓글