데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      (go-02) Go 언어 기본 타입 살펴보기

      seungkyua 22.07.29
      2,118 8 0

      C 와 Java 를 안다면 Go 를 공부하면 헷갈리는 부분들이 다소 있다. 일반적으로 기본 내장 타입은 비슷해서 이해하기 쉽지만 pointer 와 interface 등을 공부하다 보면 헷갈리기 마련이다.

      일단 먼저 기본 타입에 대해서 설명한다.


      Built-in Type

      기본 내장 타입에는 boolean, integer, rune, float, byte, string 이 있다. 물론 complex type 도 있지만 이는 생략하겠다. 기본 내장 타입은 zero 값을 갖고 있다.

      이 중에서 숫자 타입은 integer, rune, float 이다.

      boolean

      boolean 의 zero 값은 false 이다.

      var isDev bool
      var isTrue = true
      
      fmt.Println(isDev)
      fmt.Println(isTrue)
      
      --- output ---
      false
      true

      변수 선언은 var 변수명 타입 으로 선언할 수 있다. 이렇게 설명하면 zero 값으로 false 가 자동 대입된다.

      다른 방법은 var 변수명 = 값 과 같이 변수를 선언하면서 값을 대입하는 것이다. 그럼 값을 보고 알아서 타입을 결정해 준다.


      Integer (숫자 타입 중 하나)

      Integer type 은 int8, int16, int32, int64, uint8, uint16, uint32, uint64 이다. 그리고 특별한 integer 타입으로 byte 와 rune 타입이 있다.

      byte 는 uint8 의 별칭으로 unit8 보다는 byte 를 주로 쓰게 된다.

      rune 은 int32 의 별칭이다.

      보통 Integer Type 은 int 로 많이 사용하는데, 32bit cpu 이면 int32, 64bit cpu 이면 int64 와 동일하다.

      int 의 zero 값은 0 이다.

      var x int
      var y int = 1
      var z = 2
      fmt.Println(x)
      fmt.Println(y)
      fmt.Println(z)
      
      --- output ---
      0
      1
      2


      Float (숫자 타입 중 하나)

      Float type 은 float32, float64 이 있다.

      float type 의 zero 값은 int 와 동일하게 0 이다.

      var p float64
      var q = 0.0
      fmt.Println(p)
      fmt.Println(q)
      
      --- output ---
      0
      0

      숫자 타입 간에는 편하게 해당 타입으로 변환이 가능하다.

      var x int = 10
      var p float64 = 20.2
      fmt.Println(x + int(p))
      fmt.Println(float64(x) + p)
      
      --- output ---
      30
      30.2


      String

      string 의 zero 값은 empty string 이다. Java 에서는 null string 이 있지만 Go 에서는 null 이 아니다.

      string 과 자주 사용되는 타입은 rune 과 byte 이다.

      앞에서 숫자 타입은 서로 타입 변환이 해당 타입으로 감싸주면 된다고 설명했는데 string, rune, byte 도 서로 타입 변환이 가능하다.

      Go 최신 버전에서는 숫자 타입을 단순히 string 으로 감싸는 것은 체크 시에 에러가 발생한다.

      var r rune = 'r'
      var s string = string(r)
      var b byte = 'b'
      var s2 string = string(b)
      fmt.Println(r)
      fmt.Println(b)
      fmt.Println(s)
      fmt.Println(s2)
      
      --- output ---
      114
      98
      r
      b

      rune 과 byte 는 int 타입의 별칭이라 숫자 값이 출력된 것을 이해하자.

      나중에 설명하겠지만 [] 를 사용하여 slice (배열과 비슷한) 타입을 활용하면 string 을 []byte 혹은 []rune 으로 변환할 수 있다.

      var s string = "Hello, 😀"
      var bs []byte = []byte(s)
      var rs []rune = []rune(s)
      fmt.Println(bs)
      fmt.Println(rs)
      
      --- output ---
      [72 101 108 108 111 44 32 240 159 152 128]
      [72 101 108 108 111 44 32 128512]

      😀  이모지 값은 utf-8 으로 표시해야 되기 때문에 byte 는 [240 159 152 128] 와 같이 4 바이트로 표시되고 rune 은 [128512] 로 표시된다. byte 는 int8 이고, rune 은 int32 임을 기억하자.

      이렇게 보면 string 은 rune 으로 변환하는 것이 편리하다.

      마지막으로 Short Variable Delcaration Operator(:=) 를 사용하여 var 와 type 키워드 없이 변수를 선언하고 바로 할당할 수 있다.

      var a, b int = 1, 2
      var c, d = 3, "a"
      
      i := 10
      x, s := 20.5, "Hello World"
      
      --- output ---
      1 2 3 a
      10 20.5 Hello World

      전체 내용 강의 동영상

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      seungkyua 님의 최신 블로그

      더보기
      동영상 기고하기