- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
핵심 정리
이재홍 http://www.pyrasis.com 2014.12.17 ~ 2015.02.07
중괄호중괄호는 반드시 구문의 맨 뒤에서 시작합니다.
func main() {
var num int = 1
if num == 1 {
fmt.Println(num)
}
}
변수명 := 초깃값
형식으로 var 키워드를 사용하지 않고 변수를 선언할 수 있습니다.
age := 10
name := "Maria"
변수 여러 개에 값을 콤마로 구분하여 대입하는 방법을 병렬 할당(Parallel assignment)이라고 합니다.
var x, y int
var age int
x, y, age = 10, 20, 5
실수는 무한히 많지만 유한 개의 비트로 실수를 표현할 때는 근사 값을 사용하게 됩니다. 따라서 반올림 오차(Rounding error)가 발생하므로 == (등호)를 사용하여 직접 비교하면 안됩니다. 실수를 비교할 때는 비교할 값과 차이를 구한 뒤 머신 입실론보다 작거나 같은지 비교합니다.
const epsilon = 1e-14 // Go 언어 머신 입실론
fmt.Println(math.Abs(a-9.0) <= epsilon) // true: 연산한 값과 비교할 값의 차이를 구한 뒤
// 머신 입실론보다 작거나 같은지 비교
오버플로우는 각 자료형에서 저장할 수 있는 최대 크기를 넘어섰을 때 발생하며, 언더플로우는 최소 크기보다 작아졌을 때 발생합니다. Go 언어는 오버플로우와 언더플로우 상황을 허용하지 않으며 컴파일 에러를 발생시킵니다.
자료형 변환Go 언어는 강 타입(Strongly-typed) 언어이므로 자료형은 명시적으로 변환해야 합니다. 그리고 자료형을 변환했을 때 값이 버려질 수 있으므로 주의합니다.
var num1 int = 3
var num2 float32 = 2.2
fmt.Println(num1 + num2) // 정수 + 실수이므로 컴파일 에러
fmt.Println(float32(num1) + num2) // 5.2: 정수를 실수로 변환
fmt.Println(num1 + int(num2)) // 5: 실수를 정수로 변환하여 0.2를 버림
Go 언어는 문자와 문자열을 유니코드 UTF-8로 저장합니다.
var r1 rune = '한'
var r2 rune = '\ud55c' // 한
var r3 rune = '\U0000d55c' // 한
var s1 string = "Hello, world!\n"
var s2 string = "안녕하세요\n"
var s3 string = "\ud55c\uae00" // 한글: 유니코드 문자 코드로 저장
var s4 string = "\U0000d55c\U0000ae00" // 한글: 유니코드 문자 코드로 저장
var s5 string = "\xed\x95\x9c\xea\xb8\x80" // 한글: UTF-8 인코딩의 바이트 값으로 저장
영문은 1바이트를 차지하므로 len
함수로 문자열의 길이를 구할 수 있지만 유니코드를 사용하여 문자열을 저장했다면 utf8.RuneCountInString 함수를 사용하여 문자열의 실제 길이를 구합니다.
var s1 string = "한글"
fmt.Println(utf8.RuneCountInString(s1)) // 2: 문자열의 실제 길이를 구함
Go 언어는 변수에 문자열을 저장한 뒤 내용을 수정할 수 없습니다. 문자열의 내용을 수정하려고 하면 컴파일 에러가 발생합니다.
var s1 string = "Hello, world!\n"
s1[0] = 'z' // 컴파일 에러
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.