바둑에서 상수의 미세한 차이;Go는 JavaScript가 아닙니다.
게시물The Nuances of Constants in Go; Go Isn’t JavaScript이 Qvault에 처음 등장했다.
만약 당신이 비유형화된 언어에서 왔다면, 상량은 바둑에서 사람을 곤혹스럽게 할 수도 있고, 쉽게 오용될 수도 있다.Go에서 어떻게 작동하는지 자세한 내용을 살펴보겠습니다.이것은 이상하지 않을 수도 있지만, Go의 상량은 자바스크립트의 bastardized 버전의 개념과 거의 다르다.
Go vs JavaScript
많은 프로그래밍 언어는 상수를 지원하는데, 일반적으로 키워드
const
로 표시한다.Go와 JavaScript 모두 동일한 방식으로 새 상수를 선언합니다.
const frameRate = 60
Go의 상수
JavaScript의 상수
const
키워드는 상수 값을 정의하지 않습니다.그것은 값에 대한 상수 인용을 정의했다.Go에서 상수는 보유한 값에 대해 완전한 안전성을 제공합니다.그것들은 계산할 수 없지만, 사용 빈도를 낮출 수 있지만, 항상 같은 값을 인용할 수 있다.
JavaScript에서 a
const
는 같은 이름이 같은 범위 내의 다른 변수를 참조하도록 변경할 수 없도록 하는 것입니다.Go 상수는 컴파일할 때 값을 지정해야 합니다.
프로그램이 실행되기 전에 Go의 상수를 할당해야 합니다.프로그램이
go build
컴파일을 사용할 때, 모든 상수를 계산하고 저장합니다.상수는 다른 상수의 값에 의존할 수 있지만, 실행할 때 계산하는 것에 의존하지 않는다.예:const seconds = 120
const minutes = seconds / 60
프로그램이 실행되기 전에 이 두 값을 알 수 있기 때문이다.다음 작업이 잘못되었습니다.func addMinutes(minutes int) {
const more = minutes + 60
return more
}
이것은 작용하지 않는다. 왜냐하면 more
운행 시 변수minutes
에 의존하기 때문이다.이것은 JavaScript에 적용됩니다. 왜냐하면 JavaScript에서 상수의 유일한 규칙은 재분배할 수 없기 때문입니다.상수 속도 향상
Go 컴파일러는 상수 값의 변화를 걱정할 필요가 없기 때문에 변하지 않는 숫자로 상수의 모든 실례를 교환할 수 있습니다.이것은 상수를 좀 빨리 한다.
상수를 사용해야 합니까?
맞다상수가 더 안전하다.
가능한 한 상수를 사용하다.왜 당신은 당신이 영원히 변하지 않을 값을 의외로 바꾸기를 원합니까?컴파일러로 하여금 너를 자신에게서 구해내고, 가능한 한 상량을 많이 사용하게 해라.
프로그래밍의 전역 변수가 나쁜 생각이라는 생각에 익숙해질 수 있습니다.변수는 일반적으로 가능한 최소 범위에 속해야 한다.
Go의 상수는 전역 변수 규칙에 적용되지 않으며 전역 상수가 잘못되지 않았음을 나타냅니다.물론 상수가 한 곳에서만 사용된다면 그곳에서 의미가 있을 수도 있다.그러나 관건은 여전히 전역 성명 상량이 위험하지 않다는 것이다.
여러 상수를 블록으로 선언
const (
pi = 3.14
timeout = 120 * time.Second
maxGoroutines = 20
)
어떤 유형만 상수일 수 있다
숫자, 부울 및 문자열 유형을 상수로 설정할 수 있습니다.이것은 룬, 부동점, 정수, 심지어 유효한 베이스 형식을 바탕으로 하는 사용자 정의 형식을 포함한다.예:
type myString string
const lane myString = "wagslane"
다른 유형(예를 들어 배열, 슬라이스, 맵)은 상수로 선언할 수 없습니다.이것은 매우 의미가 있다. 왜냐하면 이러한 유형은 본질적으로 지침일 뿐이고 가변 데이터의 주소이기 때문이다.하지만 나는 another article on the elegant ways to get “effectively constant” slices and maps in Go 를 썼다.반면 JavaScript에서는 모든 내용이 변경되지 않습니다.JavaScript 배열은 상수로 선언할 수 있지만, 프로그래머가 배열의 요소를 바꾸는 것을 막을 수는 없습니다!자바스크립트
const
는 변수를 명시적으로 재할당할 수 없는 유일한 보안을 제공합니다.기본적으로 상수는 유형화되지 않습니다
Go에서 변수의 유형을 추정할 수 있습니다.
thisIsAString := "@wagslane"
다른 한편, 상수는 비유형화 표지를 얻는다const unTypedString = "@wagslane"
유형화되지 않은 문자열의 동작mostly like a string.즉, 문자열 유형이지만 문자열 유형의 Go 값이 없습니다.문자열의 공식 Go 유형이 되려면 다음을 선언해야 합니다.const typedString string = "@wagslane"
읽어주셔서 감사합니다!
질문이나 의견이 있으면 트위터에서 팔로우하세요
좀 가져와coding courses on our new platform
Subscribe 더 많은 프로그래밍 기사를 얻기 위해 우리의 시사통신에 접근
Reference
이 문제에 관하여(바둑에서 상수의 미세한 차이;Go는 JavaScript가 아닙니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/wagslane/the-nuances-of-constants-in-go-go-isn-t-javascript-2hh7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)