집중 집중 과정 파트 V: 상수, 연산자 및 예약어
6238 단어 goprogrammingbeginners
상수
이전 게시물에서 go에는 변경할 수 없는 유형이 없다고 말했습니다. 나는 반만 맞았다. Go에는
const
로 표시된 상수가 있지만 Java의 final
또는 JavaScript의 const
와 비교할 수 없습니다. 왜냐하면 go의 const
는 기본 유형과 컴파일 시간에 알 수 있는 것에 대해서만 작동하기 때문입니다. 부울 값, 정수, 부동 소수점, 문자, 룬 및 문자열과 같습니다. struct, func 또는 interface와 같은 복합 유형의 상수를 만들 수 없습니다. 모든 값은 컴파일 시간에 알려야 합니다. 거의 모든 임의의 숫자 상수를 형식화되지 않은 const에 저장할 수 있습니다. 값을 사용하려고 할 때 문제가 발생합니다.const (
BigConst = math.MaxFloat64 * math.MaxFloat64
)
go 코드의 맨 위에 이것이 있으면 코드를 컴파일하십시오. 괜찮을거야. 그러나 이것을 인쇄하거나 전송하려고하면
fmt.Println(BigConst) // this code wont compile
BigConst
가 float64
에 맞지 않기 때문에 이 코드는 컴파일되지 않습니다.이오타
iota
상수 생성기로 일련의 상수를 생성할 수 있습니다.const (
a0 = iota // 0
a1 = iota // 1
a2 = iota // 2
a3 = iota // 3
)
일련의 상수에 대한 값을 설정하기 위해 할당을 건너뛰어 속기를 사용할 수도 있습니다.
const (
b0 = iota // 0
b1 // 1
b2 // 2
b3 // 3
)
하나 또는 두 개의 값
iota
을 건너뛰면 생성기가 계속 계산합니다.const (
c0 = iota // 0
c1 = 43
c2 = 75
c3 = iota // 3
)
나는 이것이 유용할 시나리오를 상상할 수 없습니다. 하지만 거기에 있습니다.
iota
생성기는 const
블록당 재평가됩니다.const d0 = iota //0
const d1 = iota //0
const d2 = iota //0
const d3 = iota //0
const
는 다른 언어나 수학 상수에서 enum
와 거의 비슷하게 사용됩니다.연산자
Go는 여러 연산자를 지원합니다. 그들 중 일부는 산술 연산자입니다. 일부는 구두점입니다. 기타는 컨텍스트에 따라 특정 의미를 갖습니다.
+ & += &= && == != ( )
- | -= |= || < <= [ ]
* ^ *= ^= <- > >= { }
/ << /= <<= ++ = := , ;
% >> %= >>= -- ! ... . :
&^ &^=
The official language spec 각 연산자에 대해 자세히 설명합니다.
값 계산에 사용되는 연산자에는 우선 순위가 설정되어 있습니다. 우선 순위가 같은 연산자는 왼쪽에서 오른쪽으로 평가됩니다.
Precedence Operator
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||
예를 들어
x := 5*10 + 6/3 | 7%4&15
// (5*10) + (6/3) | (7%4)&15 => 50 + 2 | 3&15 => 52 | 3 = 55
이것은 모호함 없이 평가됩니다. 그러나 이것은 당신이 할 수 있다고 해서 반드시 해야 한다는 의미는 아니라는 고전적인 예입니다. 이것은 사람이 쉽게 읽을 수 없습니다. 적절한 대괄호를 사용하면 가독성이 높아집니다.
예약어
Go에는 상당히 적은 예약 키워드 세트가 있습니다. 다른 언어에는 상당히 큰 예약 키워드가 있습니다. C++ 95, Java 53, JS 64 등. Go에는 25개의 예약어만 있습니다. 예약된 키워드는 구문에서 이 이름을 가진 이름을 지정할 수 없음을 의미합니다.
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
이렇게 제한된 키워드 집합을 갖는 것에도 몇 가지 단점이 있습니다.
보시다시피 어떤 유형도 실제로 예약된 키워드의 일부가 아닙니다. 따라서 int라는 변수를 만들 수 있습니다. 이제 int 유형의 변수를 만들려고 하면 작동하지 않습니다.
int := 10 // this is valid code
var c int = 10 // this doesnt work now
다음 단계
이것은 바둑 단기집중과정 시리즈의 5부입니다.
Reference
이 문제에 관하여(집중 집중 과정 파트 V: 상수, 연산자 및 예약어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/moficodes/go-crash-course-part-v-constants-operators-and-reserved-keywords-1pap텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)