Golang 캐스팅 예

Golang Kaeseuting Ye



값의 데이터 유형을 한 유형에서 다른 유형으로 변경하는 프로세스를 유형 변환이라고 하며 유형 변환이라고도 합니다. 명시적 유형 변환을 사용하여 Go에서 유형 캐스팅이 수행됩니다. Go는 강력한 타이핑을 지원합니다. 따라서 유형 간에 변환할 때 목적을 명시적으로 나타내야 합니다. 이렇게 하면 형식 안전성이 향상되고 입력 오류 가능성이 줄어듭니다. 이 글에서는 Go에서 다양한 유형으로 캐스팅하는 방법을 살펴보겠습니다.

예제 1: Golang 기본 유형 캐스팅

어디에서나 변수의 유형을 수정하려면 유형 변환이 필요하기 때문에 Go에서 직접 및 기본 캐스팅의 예부터 시작하겠습니다.

패키지 기본
수입 (
'fmt'
)
기능 기본 () {
~였다 엑스 정수 = 31
그리고 := float64 ( 엑스 )
fmt . Println ( 그리고 )
}

여기에서 'int' 유형의 'x'라는 변수를 선언하고 값 31을 할당하여 기본 함수로 시작합니다. 그런 다음 변수 'y'는 속기 할당 연산자 ':='를 사용하여 선언됩니다. 'y'의 유형은 'x'를 'float64'로 변환한 결과인 오른쪽 식에서 자동으로 결정됩니다. 따라서 이 프로그램에서 'x'의 값은 'float64'로 변환되어 'y'에 할당됩니다.

Go의 기본 캐스팅에서 검색된 결과는 다음과 같이 표시됩니다.

예제 2: Golang 암시적 유형 캐스팅

서로 다른 형식 간에는 암시적 형식 캐스팅이 허용되지 않습니다. Go는 명시적 변환 없이 한 유형의 값을 다른 유형으로 직접 할당하거나 사용할 수 없음을 의미하는 강력한 유형 지정을 시행합니다. 다음에서는 Go에서 예외를 생성하는 암시적 캐스팅을 수행하려고 합니다.

패키지 기본
수입 'fmt'
기능 기본 () {
~였다 정수 정수 = 9 . 08
fmt . Printf ( '정수는 %g' , 정수 )
}

다음은 '정수' 변수가 'int' 유형으로 선언되는 main() 함수로 시작하는 코드입니다. '정수' 변수에 할당된 값은 부동 소수점 숫자인 9.08입니다. 부동 소수점 값을 정수 변수에 직접 할당하려고 하므로 유형 불일치 오류가 발생합니다. 그런 다음 'fmt' 패키지의 'printf' 함수를 사용하여 '%g' 형식 지정자를 사용하여 'integer' 변수의 값을 인쇄합니다.

예상대로 암시적 유형 캐스팅은 Golang에서 허용되지 않습니다. 이전 암시적 유형 캐스팅은 다음 오류를 생성합니다.

예제 3: Golang 명시적 유형 캐스팅

명시적 유형 변환을 사용하면 의도를 명시적으로 지정하면서 호환되는 유형 간에 값을 안전하게 변환할 수 있습니다. 유형 변환을 인식하고 우발적인 유형 오류를 방지하는 데 도움이 됩니다. 다음 명시적 캐스팅을 고려하십시오.

패키지 기본
수입 'fmt'

기능 기본 () {
~였다 floatVal float32 = 6 . 75
~였다 intVal 정수 = 정수 ( floatVal )
fmt . Printf ( '부동수 값은 %g입니다. \N ' , floatVal )
fmt . Printf ( '정수 값은 %d입니다.' , intVal )
}

여기서 'floatVal' 변수는 'float32' 유형으로 생성되고 '6.75' 값이 할당됩니다. 그러면 'intVal' 변수가 'int' 유형으로 선언됩니다. floatVal의 값을 intVal에 할당하기 위해 유형 변환이 사용됩니다. floatVal을 정수 값으로 변환하기 위해 floatVal을 입력으로 하는 'int' 함수가 사용됩니다. 그 후 'fmt.Printf('Float Value is %g\n', floatVal)'는 부동 소수점 값 인쇄에 적합한 %g 형식 지정자를 사용하여 floatVal의 값을 인쇄합니다. 'fmt.Printf('정수 값은 %d', intVal)' 코드 행은 정수 값 인쇄에 적합한 %d 형식 지정자를 사용하여 intVal 값을 인쇄합니다.

다음 출력은 캐스팅 후 floatVal 및 intVal 모두에 대한 값을 생성합니다.

예 4: 평균을 얻기 위한 Golang 유형 캐스팅

다음으로 캐스팅을 수행하여 주어진 값에서 평균 수를 얻습니다. 다음에서 제공되는 소스 코드를 살펴보겠습니다.

패키지 기본
수입 'fmt'
기능 기본 () {
~였다 정수 = 900
~였다 내 번호 정수 = 이십
~였다 평균 float32
평균 = float32 ( ) / float32 ( 내 번호 )
fmt . Printf ( '평균 = %f \N ' , 평균 )
}

여기서는 처음에 세 개의 변수를 선언합니다. 'total'은 900의 값으로 초기화된 정수 변수입니다. 'MyNumber'는 20의 값으로 초기화된 정수 변수입니다. 계산된 평균은 float32 'average' 변수에 저장됩니다. 그런 다음 계산을 수행하기 위해 평균 공식이 제공됩니다. 나눗셈이 부동 소수점 나눗셈으로 수행되도록 하기 위해 'total' 및 'MyNumber' 값이 유형 변환을 사용하여 float32로 변환됩니다. 계산된 평균은 'average' 변수에 할당됩니다. 마지막으로 'printf' 함수에 사용되는 '%f\n' 형식 문자열은 부동 소수점 값이 인쇄되어야 하고 뒤에 줄 바꿈 문자가 표시되도록 지정합니다.

이전 코드에서 유형 캐스팅을 암시한 후 평균으로 결과 값을 가져옵니다.

예제 5: Golang Int 및 문자열 유형 캐스팅

또한 Go는 Int와 String 유형 간의 캐스팅도 제공합니다. strconv 패키지의 기능을 사용하여 이를 수행할 수 있습니다.

패키지 기본
수입 (
'fmt'
'strconv'
)
기능 기본 () {
~였다 str = '1999'
~에 , _ := strconv . 트레일러 ( 에스 )
fmt . Println ( ~에 )
~였다 정수 정수 = 1999년
toStr := strconv . 익사 ( 정수 )

fmt . Println ( toStr )
}

다음은 두 개의 변수 선언으로 시작하는 코드입니다. 'str'은 '1999'의 값으로 초기화되는 문자열 변수이고 'integer'는 '1999'의 값으로 초기화되는 정수 변수입니다. 그런 다음 'strconv.Atoi()' 함수를 사용하여 'str' ​​문자열을 정수 값으로 변환합니다. 'v'의 반환 값은 변환된 정수를 나타내며 공백 '_' 식별자는 Atoi()에서 반환되는 모든 잠재적 오류를 무시하는 데 사용됩니다.

다음으로 strconv.Itoa() 함수를 사용하여 정수를 문자열 값으로 변환합니다. 'toStr'인 반환 값은 변환된 문자열을 나타냅니다.

출력에는 '1999' 문자열에서 정수로의 변환과 '1999'의 원래 값을 생성하는 문자열로의 변환이 표시됩니다.

예제 6: 문자열과 바이트 간의 Golang 유형 캐스팅

또한 Go의 캐스팅은 문자열 및 바이트 유형에서도 수행할 수 있습니다. 다음 코드는 문자열과 바이트 슬라이스 간의 변환을 보여줍니다.

패키지 기본
수입 (
'fmt'
)
기능 기본 () {
~였다 미스터 = '안녕하세요'
~였다 b1 [] 바이트 = [] 바이트 ( myStr )
fmt . Println ( b1 )
toString := ( b1 )
fmt . Println ( toString )
}

여기서 변수는 특정 값으로 초기화되는 'myStr' 및 'b1'로 먼저 선언됩니다. 그런 다음 []byte(myStr) 표현식은 유형 변환을 사용하여 'myStr' 문자열을 바이트 슬라이스로 변환합니다. 결과 바이트 슬라이스를 'b1' 변수에 할당합니다. 그런 다음 'string(b1)' 표현식은 유형 변환을 사용하여 바이트 슬라이스 b1을 다시 문자열로 변환합니다. 결과 문자열을 'toString' 변수에 할당합니다.

출력은 'Hey There' 문자열과 해당 바이트 슬라이스 표현 간의 변환을 다음과 같이 보여줍니다.

예 7: 제곱근을 얻기 위한 Golang 유형 캐스팅

이제 Go에서 캐스팅을 수행하여 제곱근 결과를 찾습니다. 코드는 다음과 같이 배치됩니다.

패키지 기본
수입 (
'fmt'
'수학'
)
기능 기본 () {
~였다 N 정수 = 177
~였다 SqrtN float64
SqrtN = 수학 . Sqrt ( float64 ( N ))
fmt . Printf ( '%d의 제곱근은 %.2f입니다. \N ' , N , SqrtN )
}

여기서 'n' 변수는 int로 선언되어 '144'라는 값을 할당합니다. 'SqrtN' 변수는 float64로 선언되고 계산된 'n'의 제곱근을 저장합니다. 그런 다음 math.Sqrt() 함수를 배포하여 'n'의 제곱근을 계산합니다. math.Sqrt()는 float64 인수를 예상하므로 'n' 값은 float64(n)을 사용하여 float64로 변환됩니다. 그런 다음 'Square root of %d is %.2f\n' 형식 문자열은 정수 값(%d)과 부동 소수점 값(%.2f)을 지정하는 'printf' 함수를 호출합니다. '%.2f'의 '.2' 정밀도 지정자는 제곱근이 소수점 이하 두 자리로 인쇄되도록 합니다.

주어진 값의 제곱근을 나타내는 다음 출력을 가져옵니다.

결론

Go의 캐스팅은 모두 실행 가능한 고유한 예와 함께 설명됩니다. Go에서 typecasting은 강력한 타이핑을 시행하고 코드 명확성과 안정성을 향상시키는 명시적입니다.