>  기사  >  백엔드 개발  >  Golang의 유형 변환에 대한 자세한 소개

Golang의 유형 변환에 대한 자세한 소개

PHPz
PHPz원래의
2023-04-25 16:19:27943검색

Golang은 정적으로 유형이 지정되는 프로그래밍 언어이며 유형 변환은 일상적인 프로그래밍에서 중요한 역할을 합니다. Golang에서 유형 변환은 값을 한 유형에서 다른 유형으로 변환할 수 있습니다. 이 기사에서는 Golang의 유형 변환을 자세히 소개합니다.

  1. 기본 유형 변환

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
  1. 인터페이스 유형 변환

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)
        }
    }
}
  1. 사용자 정의 유형 변환

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.