Golang은 정적으로 유형이 지정되는 프로그래밍 언어이며 유형 변환은 일상적인 프로그래밍에서 중요한 역할을 합니다. Golang에서 유형 변환은 값을 한 유형에서 다른 유형으로 변환할 수 있습니다. 이 기사에서는 Golang의 유형 변환을 자세히 소개합니다.
Golang에서는 자동 유형 변환과 강제 유형 변환이 모두 가능합니다. 자동 유형 변환은 필요할 때 컴파일러가 자동으로 한 유형을 다른 유형으로 변환하는 것을 의미합니다. 예를 들어, 부동 소수점 유형의 변수에 정수 유형의 값을 할당하면 자동으로 유형 변환이 수행됩니다. 캐스팅은 프로그래머가 값을 한 유형에서 다른 유형으로 명시적으로 변환하는 것입니다. Golang에서는 강제 유형 변환을 대상 유형(변환된 값)으로 작성합니다.
다음은 기본 유형 변환의 몇 가지 예입니다.
var i int = 10 var f float64 = float64(i) // int to float64 var u uint = uint(f) // float64 to uint var s string = string(i) // int to string var b []byte = []byte(s) // string to []byte var r rune = rune(i) // int to rune, represents a Unicode code point
Golang에서 인터페이스 유형 어설션은 한 인터페이스 유형의 값을 다른 인터페이스 유형의 값으로 변환하는 것을 의미합니다. 그러나 인터페이스 유형 중 하나에서 다른 유형으로 변환하는 것이 안전하지 않은 경우 컴파일러는 컴파일에 실패합니다. 따라서 인터페이스 유형 변환을 수행할 때 초기 유형은 대상 유형의 상위 집합이 될 수 있지만 변환된 대상 유형은 원래 유형의 하위 집합이어야 한다는 점을 만족해야 합니다.
다음은 인터페이스 유형 변환의 예입니다.
package main import "fmt" type Animal interface { Speak() string } type Cat struct{} func (c Cat) Speak() string { return "cat" } type Dog struct{} func (d Dog) Speak() string { return "dog" } func main() { animals := []Animal{Cat{}, Dog{}, Cat{}, Dog{}} for _, animal := range animals { fmt.Println(animal.Speak()) if v, ok := animal.(Dog); ok { fmt.Println(v, ok) } } }
Golang에서는 기본 유형 및 인터페이스 유형 변환 외에 사용자 정의 유형 변환도 수행할 수 있습니다. 새로운 유형을 정의하는 변환은 새로운 유형을 이전 유형으로 또는 그 반대로 변환하기 때문에 매우 유용합니다. NewType을 사용하여 타입으로 정의하지 않으면 변환 기능을 사용할 수 없습니다.
다음은 사용자 정의 유형 변환의 예입니다.
type Celsius float64 type Fahrenheit float64 const ( AbsoluteZeroC Celsius = -273.15 FreezingC Celsius = 0 BoilingC Celsius = 100 ) func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) } func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) } func main() { fmt.Printf("%g\n", BoilingC-FreezingC) // "100" °C boilingF := CToF(BoilingC) fmt.Printf("%g\n", boilingF-CToF(FreezingC)) // "180" °F }
요약
이 글에서는 기본 유형, 인터페이스 유형 및 사용자 정의 유형의 변환을 포함하여 Golang의 유형 변환을 소개합니다. 유형 변환을 수행할 때 프로그램이 올바른지 확인하기 위해 유형 변환의 안전 사양을 준수해야 합니다. 유형 변환은 많은 시나리오에서 필요합니다. 좋은 유형 변환 설계는 프로그램 성능을 향상시킬 수 있으며 실제 프로그래밍에서 특히 중요합니다.
위 내용은 Golang의 유형 변환에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!