간단하게 다음과 같이 생각할 필요가 있다.
모든 개는 4개의 다리는 갖는다. -> 맥스는 개다. -> 따라서 맥스는 4개의 다리를 갖는다.
프로그래밍 언어에서도 마찬가지다.
모든 문자열은 길이를 가진다. -> x 는 문자열이다. -> x 는 길이를 갖는다.
실수의 집합이든, 자연수의 집합이든, 모든 집합의 구성요소는 해당 집합의 다른 요소들과 특징을 공유한다. 예를 들어 자연수의 집합인 ℕ 의 경우 결합법칙이 성립한다. 그리고 프로그래밍 언어에서 모든 값은 특정한 타입을 가지고 특정한 속성을 공유한다. 이런 식으로 수학에서의 집합은 프로그래밍 언어에서 타입과 유사한 면이 있다.
Go 는 정적 타입 프로그래밍 언어이다. 이 말은 변수는 항상 특정한 타입을 가지며, 그 타입을 바꿀 수 없다는 의미다. 정적 타입은 처음에는 다루기 힘들게 느껴질 수도 있다. 하지만 타입은 프로그램이 무엇을 하고 있는지 생각하는데, 그리고 실수를 잡아내는데 도움을 준다.
Go 에는 몇 가지 내장된 데이터 타입이 존재한다. 하나씩 살펴보자.
Numbers
Go 에는 숫자를 나타내는 여러가지 타입이 존재한다. 일반적으로 2가지로 나눌 수 있는데, 정수와 실수가 그것이다.
정수
Go 의 정수타입에는 uint8, uint16, uint32, uint64, int8, int16, int32 그리고 int64 이 있다. 여기서 8, 16, 32, 그리고 64 는 해당 타입이 사용하고 있는 비트수를 의미한다. uint 는 “unsigned integer” 를 의미하고, int 는 “signed integer” 을 뜻한다. Unsigned integers 은 0 또는 양의 정수만 포함한다. 그리고 타입에는 2가지 별칭이 있는데, uint8 과 같은 byte와 int32와 같은 rune 이 있다.
실수
실수와 관련해서는 다음의 사항만 유념하면 된다.
- 실수는 정확하지 않을 수 있다. 예상하는 값에 가깝겠지만, 반드시 일치하지는 않는다.
- 정수와 마찬가지로 실수는 32bit 또는 64bit 와 같이 일정한 크기를 갖는다.
- 수에는 양의 무한대 또는 음의 무한대, 0/0 과 같이 몇 가지 다른 값도 존재한다.
예제
chapter3 라는 폴더를 만들고 아래와 같은 내용의 main.go 파일을 만들자.
1 2 3 4 5 6 7 | package main import "fmt" func main() { fmt.Println("1+1=", 1+1) } | cs |
프로그램을 실행하면 다음과 같은 결과를 얻는다.
1 2 3 | ~/go/src/golang-book/chapter3# go run main.go 1+1= 2 | cs |
그럼 이번에는 실수를 이용해서 실행해보자.
1 2 3 4 5 6 7 | package main import "fmt" func main() { fmt.Println("1+1=", 1.0+1.0) } | cs |
라인 6에서 보듯이 .0 을 사용해 실수임을 Go 에게 알려주었다.
실행을 해보면 이전과 동일한 결과를 얻음을 알 수 있다.
1 2 3 | ~/go/src/golang-book/chapter3# go run main.go 1+1= 2 | cs |
그럼 이번에는 실수를 이용해서 실행해보자.
Go에는 더하기 이외에 다음과 같은 연산자가 있다.
+ addition
- subtraction
* multiplication
/ division
% remainder
'프로그래밍 Programming' 카테고리의 다른 글
Go 언어 입문 - Types - Booleans (golang-book) (0) | 2018.08.28 |
---|---|
Go 언어 입문 - Types - Strings (golang-book) (0) | 2018.08.28 |
Go 언어 입문 - Your First Program (golang-book) (0) | 2018.08.27 |
Strings, bytes, runes and characters in Go - (4) Range loops, Libraries (0) | 2018.08.25 |
Strings, bytes, runes and characters in Go - (3) Code points, characters, and runes (0) | 2018.08.25 |