Go 시리즈: 변수 선언 모범 사례 및 주의 사항
변수 선언
go에서 변수를 선언하려면 다음 중 하나를 수행하세요.
- 초기 값 없이 선언하면 유형을 선언해야 합니다.
var name string
- 초기 값으로 선언합니다. 유형은 go에서 암시적으로 유추되므로 선택 사항입니다.
유형 선언 포함:
var name string = "go"
유형 선언이 없는 경우:
var name = "go"
- 짧은 선언:
string := "go"
이 짧은 선언 사용에 대한 한 가지 중요한 참고 사항: 변수 섀도잉에 유의하세요. 변수를 재사용하는 것처럼 보일 수 있지만 그렇지 않습니다. 체크되지 않은 콜론이 모든 차이를 만들 수 있습니다
count := 1
if count > 0 {
// this is a new count variable within the block
// so vigilant when using same variable name
count := 2
fmt.Println(count) // print 2
}
fmt.Println(count) // print 1
- 기존 변수에 값을 할당하고 짧은 선언을 혼합하여 작성하는 가장 일반적인 작업 중 하나입니다. 함수에서 변수에 값 및 가능한 오류를 할당합니다. 일반적인 오류를 피하기 위해 함수의 모범 사례에 대해 자세히 설명하겠습니다.
var result int
result, err:= calculate()
fmt.Println(result, err)
- 동일한 유형에 대해 한 줄로 여러 변수 선언을 수행할 수 있으므로 다른 변수에 대해 유형을 생략할 수 있습니다.
var a,b int
동일하거나 다른 유형의 여러 줄:
var (
c string
d bool
)
범위를 기반으로 하는 두 종류의 변수:
1.패키지 수준 변수 - 경고: 이것을 상수로만 사용했습니다. 정당한 이유 때문에 값을 변경하면 추적하기 어렵습니다.
package main
var myPkgVar = 1
func printMyVar(){
fmt.Println(myPkgVar)
}
상수 값은 컴파일 시간에 결정됩니다. 기본 값 또는 정적 계산만 가능합니다. 그렇지 않으면 시도하면 Go에서 컴파일 오류가 발생합니다. 따라서 부울, 숫자, 문자열, 룬이 작동합니다.
작동:
const myArrLen = len([1]int{1})
const myStrLen = len("str")
const myNum = 2/4
하지만 다음과 같은 동적 값은 없습니다.
const t = time.Now()
const slice = []int{}
2.함수수준변수 - 우리가 평소에 사용하는 변수로, 항상 함수수준 변수를 사용하도록 노력한다. 모든 것이 값으로 전달되므로 go 에서 함수를 탐색할 때 더 많은 이유를 살펴보겠습니다.
3.실제로 세 번째 블록이 있습니다. 절대 남용하지 않지만 알아두면 좋은 '유니버스 레벨' 블록입니다. 다음은 true가 가려질 수 있는 맨 위 범위의 미리 선언된 식별자 집합 중 하나이므로 오류 없이 놀랍게도 컴파일됩니다
true :=1
fmt.Println(true)
몇 가지 참고 사항
- 사용하지 않는 변수는 오류를 발생시킵니다. 이는 코드 혼란을 줄이기 위한 이동 메커니즘이지만 패키지 수준 변수는 확인되지 않으므로 사용을 피해야 합니다. 또한 const 변수도 확인되지 않습니다. 이는 컴파일 시간에 계산되기 때문입니다. 부작용이 없으므로 사용하지 않으면 컴파일된 코드에 포함되지 않습니다. 여전히 사용하지 않는 변수 혼란을 피하고 싶습니다. 이것이 const가 이유입니다. 또한 var보다 덜 사용되며 var & pass-by-value의 조합은 일반적으로 const를 대체하기에 충분합니다.
- 관용적인 go는 변수 이름 지정에 camelCase를 사용합니다 .
- 대문자 이름에는 특별한 의미가 있습니다. 이는 에 정의된 패키지 외부에서 액세스할 수 있음을 나타냅니다.
- Go는 짧은 변수 이름을 선호합니다. 이 짧은 이름은 두 가지 용도로 사용됩니다. 첫 번째는 반복적인 타이핑을 제거하여 코드를 더 짧게 유지한다는 것입니다. 둘째, 코드가 얼마나 복잡한지 확인하는 역할을 합니다. 짧은 이름의 변수를 추적하기 어렵다면 코드 블록이 너무 많은 일을 하고 있는 것일 수 있습니다.
- 반면에 패키지 수준 이름은 정의상 더 널리 사용되므로 더 설명적이어야 합니다.
다음 게시물은 큰 주제인 function 이 될 것입니다. 다룰 내용이 너무 많아서 기능의 다른 측면에 초점을 맞춘 여러 부분이 필요할 수 있습니다.
Reference
이 문제에 관하여(Go 시리즈: 변수 선언 모범 사례 및 주의 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/achristoph/go-series-variable-declaration-best-practices-gotchas-1egf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)