목차
1. 숫자 유형간에 변환
2. 문자열과 숫자 사이를 변환합니다
숫자로 문자열
문자열 숫자
3. 줄과 바이트 사이를 변환
4. interface{} (ANE)
주장을 입력하십시오
유형 스위치
5. 스트러크 및 사용자 정의 유형 변환
요약
백엔드 개발 Golang Golang에서 데이터 유형을 변환하는 방법

Golang에서 데이터 유형을 변환하는 방법

Aug 19, 2025 pm 02:43 PM
golang 데이터 유형 변환

GO의 유형 변환은 명시 적으로 수행해야하며 암시 적으로 수행 할 수 없습니다. 숫자 유형의 경우 int64 (a)와 같은 변환 기능으로 대상 유형을 사용하지만 오버플로 및 정밀 손실에주의를 기울이십시오. 문자열과 숫자 사이의 변환에는 strconv 패키지에서 Atoi, parseint, parsefloat, itoa 및 formatfloat와 같은 기능이 필요하며 가능한 오류를 처리해야합니다. 문자열과 바이트 슬라이스는 [] 바이트 (들) 및 문자열 (b)을 통해 서로 직접 변환 될 수 있으며, I/O 및 네트워크 작업에 적합합니다. 인터페이스 {} (또는 어떤) 유형의 변환은 유형의 어설 션 x (유형) 또는 유형 스위치에 따라 공황을 피하기 위해 원래 유형을 안전하게 추출합니다. 구조는 필드가 완전히 일관된 경우에만 직접 변환 할 수 있으며 일반적으로 기본 유형을 기반으로 한 사용자 정의 유형은 명시적인 변환 작업을 통해 변환 할 수 있습니다. 요컨대, GO는 모든 전환이 명시되어야하며, 유형 안전성을 보장하고 암시 적 변환으로 인한 잠재적 오류를 줄여야합니다.

Golang에서 데이터 유형을 변환하는 방법

GO (GOLANG)에서 데이터 유형을 변환하는 것은 일반적인 작업입니다. 특히 GO가 정적으로 입력되었으며 intint64 와 같은 유사한 유형 사이에서도 암시 적 유형 변환을 허용하지 않기 때문에 일반적인 작업입니다. 다른 유형 사이를 이동할 때 값을 명시 적으로 변환해야합니다. GO에서 일반적인 유형 변환을 처리하는 방법은 다음과 같습니다.


1. 숫자 유형간에 변환

GO는 밀접하게 관련이 있더라도 숫자 유형에 대한 명시적인 캐스팅이 필요합니다.

 var a int = 42
var b int64 = int64 (a)
var c float64 = float64 (a)
var d uint = uint (c) // 조심해야합니다 : int truncates로 float
  • 대상 유형을 함수로 사용하십시오 : TargetType(value)
  • 오버플로와 잘림에주의하십시오 (예 : 큰 float64 int 로 변환하면 정밀도를 잃거나 랩을 줄 수 있습니다).

일반적인 숫자 변환 :

  • int 1 int8 , int16 , int32 , int64
  • int uint , uint32 , uint64
  • int float32 , float64

⚠️ 예상치 못한 행동을 피하기 위해 항상 범위를 검증합니다.


2. 문자열과 숫자 사이를 변환합니다

문자열을 숫자로 변환하려면 그 반대도 마찬가지로 strconv 패키지를 사용하십시오.

숫자로 문자열

 "strconv"가져 오기

// int로 문자열
num, err : = strcon.atoi ( "123")
err! = nil {인 경우
    log.fatal (err)
}

// parseint를 사용한 더 많은 컨트롤
i64, err : = strconv.parseint ( "123", 10, 64) //베이스 10, 비트 크기 64
err! = nil {인 경우
    log.fatal (err)
}
I : = int (i64)

// parsefloat
f, err : = strcon.parsefloat ( "3.14", 64)
err! = nil {인 경우
    log.fatal (err)
}
  • AtoiParseInt(s, 10, 0)
  • ParseInt 의 두 번째 논쟁은베이스 (예 : 10, 10 진 16)입니다.
  • 세 번째는 비트 크기입니다 (0은 추론하지만 보통 32 또는 64)

문자열 숫자

 str : = strconv.itoa (123) // int to String

// 형식 함수 사용
str = strconv.formatint (123, 10)
str = strconv. formatfloat (3.14, 'f', 2, 64) // 'f'형식, 2 십자 자리
  • ItoaFormatInt(i, 10) 의 경우 짧습니다.
  • FormatFloat 정밀도 및 형식을 제어 할 수 있습니다 ( 'f' , 'e' , 'g' )

3. 줄과 바이트 사이를 변환

끈은 불변이지만 []byte 슬라이스와 변이 적입니다. 변환은 간단합니다.

 S : = "안녕하세요"
B : = [] 바이트 (S)

// 문자열로 돌아갑니다
s2 : = 문자열 (b)
  • I/O, JSON 또는 네트워크 데이터로 작업 할 때 유용합니다
  • 필요하지 않음 - GO는 string[]byte 간에 직접 변환 할 수 있습니다.

참고 : 비 ASCII 텍스트 (예 : UTF-8)를 처리 할 때는 논리가 인코딩을 존중해야합니다.


4. interface{} (ANE)

GO에서 모든 유형은 interface{} (Pre-Go 1.18) 또는 any GO 1.18)에 할당 할 수 있습니다. 원래 유형을 추출하려면 유형 어설 션 또는 유형 스위칭을 사용하십시오.

주장을 입력하십시오

 var x any = "hello"
str, ok : = x. (String) // 안전한 유형 어설 션
OK {IF OK {
    fmt.println (str)
} 또 다른 {
    fmt.println ( "문자열이 아님")
}
  • 공황을 피하기 위해 value, ok := interface.(Type)
  • 유형이 잘못되면 okfalse 입니다

유형 스위치

 func printtype (v any) {
    스위치 val : = v. (type) {
    사례 문자열 :
        fmt.println ( "String :", Val)
    사례 int :
        fmt.println ( "int :", val)
    Case Float64 :
        fmt.println ( "float64 :", val)
    기본:
        fmt.println ( "알 수없는 유형")
    }
}

JSON UNMARSHALING과 같은 동적 데이터를 처리 할 때 유용합니다.


5. 스트러크 및 사용자 정의 유형 변환

기본 구조가 동일한 경우 구조물 유형을 변환 할 수 있습니다.

 유형 사용자 struct {
    이름 문자열
    나이 int
}

admin struct 유형 {
    이름 문자열
    나이 int
}

u : = user { "bob", 30}
a : = admin (u) // 필드가 정확히 일치하는 경우에만 작동합니다.
  • 일반적인 관행이 아닙니다 - 필드를 수동으로 복사하거나 필요한 경우 mapper 와 같은 라이브러리를 사용하십시오.
  • 모든 해당 필드가 이름, 유형 및 순서로 식별되는 경우에만 작동합니다.

프리미티브를 기반으로하는 사용자 정의 명명 유형의 경우 :

 userId int64를 입력하십시오

var id userId = userID (42)
var num int64 = int64 (id)

요약

  • 숫자 유형에 직접 캐스팅 사용 : TargetType(value)
  • 문자열/번호 변환에는 strconv 사용하십시오
  • string[]byte 사이를 직접 변환하십시오
  • interface{} 또는 any 유형의 어설 션 또는 스위치를 사용하십시오
  • 오버플로, 정밀 손실 및 잘못된 변환에주의하십시오

GO에서 유형 변환은주의 깊게 완료되면 명시적이고 안전합니다. 항상 오류 (특히 strconv 에서)를 처리하고 데이터에 대한 가정을 검증하십시오.

기본적으로 GO는 당신이 변환하는 것에 대해 생각하게 만듭니다. 자동 강요가 없으므로 많은 버그를 방지합니다.

위 내용은 Golang에서 데이터 유형을 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Stock Market GPT

Stock Market GPT

더 현명한 결정을 위한 AI 기반 투자 연구

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제

Golang 바이너리에 정적 자산을 포함시키는 방법 Golang 바이너리에 정적 자산을 포함시키는 방법 Aug 30, 2025 am 04:50 AM

Go의 임베드 패키지를 사용하면 정적 리소스를 이진 파일에 직접 포함시킬 수 있습니다. Go1.16에서 시작하여 // go : intembed directive wefore tefore of mariables, 단일 파일, 여러 파일 또는 전체 디렉토리를 포함 시키거나 문자열, [] byte 또는 embed.fs 유형을 지원할 수 있습니다. 임베디드 함량은 컴파일 시간에 이진으로 고정화됩니다. 경로는 존재해야하며 사례에 민감합니다. Go-Bindata와 같은 타사 도구 대신 Embed를 사용하는 것이 좋습니다. 이 방법은 간단하고 효율적이며 표준 관행이되었습니다.

Golang에서 문자열을 포맷하는 다른 방법은 무엇입니까? Golang에서 문자열을 포맷하는 다른 방법은 무엇입니까? Aug 23, 2025 pm 01:25 PM

Fmt.sprintf는 가변 삽입 및 저장에 적합한 문자열을 형식화하고 리턴하는 데 사용됩니다. 2.fmt.fprintf는 파일 또는 네트워크 쓰기에 적합한 io.writer에 직접 형식의 결과를 씁니다. 3.Strings.join은 스트링 슬라이스를 효율적으로 연결하는 데 사용됩니다. 4. 연산자는 간단한 일회성 스티치에 적합합니다. 5.Strings.Builder는 반복 또는 대규모 스티치시 고성능을 제공합니다. 6. Template 패키지는 HTML 또는 구성 파일과 같은 데이터를 기반으로 복잡한 동적 텍스트 생성에 적합합니다. 적절한 방법은 성능, 가독성 및 시나리오를 기반으로 선택하여 완전한 문장으로 끝나야합니다.

Golang의 RabbitMQ와 같은 메시지 대기열과 통합하는 방법 Golang의 RabbitMQ와 같은 메시지 대기열과 통합하는 방법 Sep 02, 2025 am 07:46 AM

답은 AMQP091-GO 라이브러리를 사용하여 RabbitMQ를 연결하고, 대기열 및 스위치를 선언하고, 메시지를 안전하게 게시하고, 메시지 소비를 QOS 및 수동 승인 및 수동 메커니즘을 다시 연결하여 GO에서 안정적인 메시지 대기열 통합을 달성하는 것입니다. 완전한 예에는 연결, 생산, 소비 및 오류 처리 프로세스가 포함되어 메시지가 손실되지 않도록하고 연결이 끊기 및 재 연결을 지원하고 Docker를 통해 RabbitMQ를 실행하여 엔드 투 엔드 통합을 완료합니다.

Golang에서 사용되는 빈 구조 구조 {}는 무엇입니까? Golang에서 사용되는 빈 구조 구조 {}는 무엇입니까? Sep 18, 2025 am 05:47 AM

Struct {}는 GO의 필드리스 구조로 제로 바이트를 차지하며 데이터가 필요하지 않은 시나리오에서 종종 사용됩니다. Goroutine 동기화와 같은 채널의 신호로 사용됩니다. 2. 효율적인 메모리에서 주요 존재 검사를 달성하기 위해 값 유형의 맵 모음으로 사용됩니다. 3. 종속성 주입 또는 조직 기능에 적합한 정의 가능한 상태없는 방법 수신기. 이 유형은 제어 흐름과 명확한 의도를 표현하는 데 널리 사용됩니다.

Golang에서 파일을 어떻게 읽고 쓰나요? Golang에서 파일을 어떻게 읽고 쓰나요? Sep 21, 2025 am 01:59 AM

goprovidessimpleanfilefile handlingsingtheosandbufiopackages.toreadasmallfileentirely, useos.readfile, whithloadsTecontintomemorySafelyAntomatically ManagestomanagesTomanagesFileOperations.forlageFilesorincrementalprocessing, bufio.scannerallows-by-lyiner

Golang 웹 서버의 맥락에서 미들웨어는 무엇입니까? Golang 웹 서버의 맥락에서 미들웨어는 무엇입니까? Sep 16, 2025 am 02:16 AM

MiddlewareWebServersErsectionstttprequestsBeeReachtheHandler, enableRusableCross-CuttingFunctionality; workgrappingHandlerstoaddpre-andpost-processinglogicsuchaslogging, Authentication, Cors, OrerrorRecovery 및 Canbechai

Golang에서 테이블 중심 테스트 란 무엇입니까? Golang에서 테이블 중심 테스트 란 무엇입니까? Aug 28, 2025 am 01:38 AM

Table-DriventestingingingingingoIsapattern ThatusesAdattructure, 일반적으로 asliceofstructs, todefinemultipletestescasess withinpectedoutputs, withintesametestLogicAcasesInalOOp, withleduceCodeduclationAndimproveStainabestation;

Golang 응용 프로그램에서 우아한 셧다운을 어떻게 처리합니까? Golang 응용 프로그램에서 우아한 셧다운을 어떻게 처리합니까? Sep 21, 2025 am 02:30 AM

gracefulshutdownsingoapplicationseentialsiverforreliable, ac

See all articles