본문으로 바로가기

[GoLang] 자료형, 변수, 상수

category Language/Go 2019. 8. 4. 09:54

자료형

Go 에는 6가지 정도로 분류 가능한 자료형이 있습니다.

  • bool(참/거짓)
    bool
  • 정수형 타입
    int, int8, int16, int32, int64
    uint, uint8, uint16, uint32, uint64
    uintptr
  • Float 및 복소수 타입
    float32, float64
  • 복소수 
    complex64, complex128
  • 문자열 타입
    string
  • 기타 타입
    byte: uint8과 동일, 바이트 코드에 사용
    rune: int32과 동일, 유니코드 코드포인트(문자에 부여한 고유한 숫자값)에 사용한다

 

변수와 상수

상수

 상수는 Go 키워드 const 를 사용하여 선언합니다. 

1
const a int = 1
cs

 와 같은 방식으로 선언합니다.

변수

 변수는 Go 키워드 var 을 사용하여 선언합니다. 

1
var a int = 1
cs

 와 같은 방식으로 선언합니다.

 

자료형 추론

Go 에서는 자료형이 무었징지 알 수 있으면 자료형 생략이 가능합니다.

아래와 같이 사용 가능합니다.

1
2
3
4
var a = 1
var ptr_a = &a  // a의 주소 저장
var b = 3.14
var str = "hello"
cs

 

더 나아가서 var 역시 생략 가능합니다.

단 이러한 경우에는 = 대신에 := 을 사용해야 합니다.

1
2
3
4
:= 1
ptr_a := &a  // a의 주소 저장
:= 3.14
str := "hello"
cs

위와 같은 방식으로 := 을 이용하면 가능합니다.

 

이미 선언된 변수는 C 나 C++ 과 같이 변수에 정적으로 자료형이 고정됩니다.

1
2
3
4
5
6
7
:= 1         // a에 정수형 변수 
str := "hello" // str에 문자열 변수 선언
= 10         // a 값을 10으로 변경
= 20         // 불가능, 선언되지 않은 변수 사용
= "world"    // 불가능, a는 이미 정수형
:= 3         // 불가능, a는 이미 선언된 변수
 
cs

 C/C++과 같은 다른 언어를 공부한 경험이 있으시면 쉽게 알 수 있는 내용입니다.

 

형변환

Go에도 당연하지만 형변환이 있습니다.

Go의 형변환은 type(name) 같은 형식으로 수행합니다. 

1
2
3
4
5
6
7
package main
 
func main() {
  const a = 1
  b := float32(a);
  println(b);
}
cs

a라는 이름으로 선언된 상수에는 1이 들어가 있습니다.

이때 b라는 변수를 선언하면서 float32형으로 변환하였습니다.

 

출력결과는 아래와 같습니다.

Go언어의 형변환

 

자 그러면 이제 Go playground에서 아래의 코드를 작성해봅시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main
 
import "fmt"
 
func main() {
    var a = 10
    var b = 3.14
    c := float32(a)
    str := "Hi,"
    str += " Go!"
    fmt.Println(a, b, c)
    fmt.Println("Hello, World", str)
}
 
cs

Run을 눌러보면

위와 같은 결과가 나옵니다. 

이때 import "fmt" 를 지우고

playground 상단의 imports를 체크하고 format을 눌러보면 

import "fmt" 가 자동으로 추가됩니다. 

이전글(링크)의 설정을 모두 마치셨다면

vscode등에서도 저장(ctrl+s)하거나 수동으로(alt+shift+f) 사용가능한 기능입니다 :) 

 

 

 

공부를 위해 정리하고 있는것이기 때문에 오류가 있으면 댓글로 알려주세요

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

[GoLang] 조건문  (0) 2019.08.13
[GoLang] 연산자  (0) 2019.08.08
[GoLang] Go 개발 환경 구축하기 (VS Code, vim)  (0) 2019.08.01
[GoLang] Go 설치하기 (리눅스/윈도우)  (0) 2019.08.01
[GoLang] Hello, playground  (0) 2019.08.01