일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- driverless
- 엘리스배열
- 음각몰드
- 건프라
- 벤치마크
- mf642cdw
- Griffiths
- 패널라인
- 양자역학
- Go
- doom-emacs
- 리플렉션
- 터미널
- mistel md600 alpha
- 고양이책
- Go 언어
- Golang
- 체리적축저소음
- Reflection
- 바로코
- 키보드
- md600alpha
- eslip
- go언어
- 다이어트
- 이맥스
- nil
- mopria
- emacs
- 스플릿키보드
- Today
- Total
Meandering Trajectory
panic Go에서 에러 처리는 반환값을 통해 이루어지는 것이 일반적이다. 하지만 프로그램 수행을 더 이상 진행할 수 없을 정도의 심각한 에러가 발생한 경우 Go 런타임은 panic을 발생시킨다. 예를 들어 아래 프로그램은 고의로 "index out of range" 예외를 일으키고 있는데package main import ( "fmt" ) func fn() { a := []int{1,2,3}; fmt.Println(a[3]); } func main() { fn() } 이때 Go 프로그램은 panic을 발생시키고 그 결과는 다음과 같다.panic: runtime error: index out of range goroutine 1 [running]: main.fn() /tmp/sandbox410484699..
C나 C++ 같은 언어에서는 다음과 같이 조건절에 변수에 값을 할당(assignment)하는 문법을 사용하는 것이 가능하다.if (x = 10) {...}이것이 가능한 이유는 이들 언어에서 할당은 표현식(expression)이고 0이 아닌 임의의 값이 참으로 간주되기 때문이다.이런 특성 때문에 종종 프로그래머들은 등호(==)를 넣어야 할 자리에 할당 연산자(=)를 넣는 실수를 한다. 이런 실수를 할 경우 조건이 무조건 참이 되는데다가 변수의 값마저 변경되기 때문에 심각한 오류가 발생할 수 있다. 따라서 이런 실수를 방지하기 위해 많은 프로그래머가 if 문의 조건을 다음과 같이 쓰도록 조언한다.if (10 == x) {...}상수값과 변수의 위치를 바꾼 것이다. 이렇게 쓰면 등호를 할당 연산자로 잘못 썼다..
Go의 인터페이스 타입 변수는 단순한 포인터가 아니다. 예를 들어 인터페이스 I를 구현한 구조체 S가 있다고 할 때, var s *Svar i Ii = s 위 코드에서 s는 초기화를 하지 않았으므로 nil이지만 이변수가 대입된 i는 nil이 아니다. 그 이유는 인터페이스가 nil이 되기 위해서는 내부적으로 타입에 해당하는 필드와 값에 해당하는 필드가 모두 nil이어야 하기 때문이다. 다시 말해서 위 코드에서 i가 nil이 아닌 이유는 값에 해당하는 필드는 nil이지만 타입에 해당하는 필드가 nil이 아니기 때문이다. 더 자세한 설명은 다음 링크 참고:"nil" Interfaces and "nil" Interfaces Values