Golang에서 데이터 유형을 변환하는 방법
GO의 유형 변환은 명시 적으로 수행해야하며 암시 적으로 수행 할 수 없습니다. 숫자 유형의 경우 int64 (a)와 같은 변환 기능으로 대상 유형을 사용하지만 오버플로 및 정밀 손실에주의를 기울이십시오. 문자열과 숫자 사이의 변환에는 strconv 패키지에서 Atoi, parseint, parsefloat, itoa 및 formatfloat와 같은 기능이 필요하며 가능한 오류를 처리해야합니다. 문자열과 바이트 슬라이스는 [] 바이트 (들) 및 문자열 (b)을 통해 서로 직접 변환 될 수 있으며, I/O 및 네트워크 작업에 적합합니다. 인터페이스 {} (또는 어떤) 유형의 변환은 유형의 어설 션 x (유형) 또는 유형 스위치에 따라 공황을 피하기 위해 원래 유형을 안전하게 추출합니다. 구조는 필드가 완전히 일관된 경우에만 직접 변환 할 수 있으며 일반적으로 기본 유형을 기반으로 한 사용자 정의 유형은 명시적인 변환 작업을 통해 변환 할 수 있습니다. 요컨대, GO는 모든 전환이 명시되어야하며, 유형 안전성을 보장하고 암시 적 변환으로 인한 잠재적 오류를 줄여야합니다.
GO (GOLANG)에서 데이터 유형을 변환하는 것은 일반적인 작업입니다. 특히 GO가 정적으로 입력되었으며 int
및 int64
와 같은 유사한 유형 사이에서도 암시 적 유형 변환을 허용하지 않기 때문에 일반적인 작업입니다. 다른 유형 사이를 이동할 때 값을 명시 적으로 변환해야합니다. 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
1int8
,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) }
-
Atoi
는ParseInt(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 십자 자리
-
Itoa
는FormatInt(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)
- 유형이 잘못되면
ok
는false
입니다
유형 스위치
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undress AI Tool
무료로 이미지를 벗다

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

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

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

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

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

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

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

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

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

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

gracefulshutdownsingoapplicationseentialsiverforreliable, ac
