백엔드 개발 Golang golang에서 변수가 문자열인지 확인하는 방법

golang에서 변수가 문자열인지 확인하는 방법

Jan 06, 2023 pm 12:41 PM
golang 언어로 가다

변수가 문자열인지 확인하는 방법: 1. "%T" 형식 지정 식별자를 사용하고 "fmt.Printf("variable count=%v is of type %T n", count, count)"; Reflect.TypeOf()를 사용하세요. 구문은 "reflect.TypeOf(variable)"입니다. 3. 검색을 위해 Reflect.ValueOf().Kind()를 사용하세요. 4. 유형을 그룹화하려면 유형 어설션을 사용하세요.

golang에서 변수가 문자열인지 확인하는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, GO 버전 1.18, Dell G3 컴퓨터.

Golang은 변수의 유형을 확인하여 변수가 문자열인지 여부를 감지합니다.

Go는 문자열 형식 식별자 %T, 리플렉션 메서드인 Reflect.TypeOf, Reflect.ValueOf.Kind, 형식 어설션 및 대소문자 전환 메서드 사용을 포함하여 변수 형식을 확인하는 여러 가지 메서드를 제공합니다. 아래에서는 이러한 네 가지 유형의 방법을 예제를 통해 소개합니다.

%T 형식 식별자

%T 문자열 형식 식별자를 사용하는 것이 유형을 확인하는 가장 간단한 방법입니다. %T는 fmt 패키지입니다. fmt.Printf를 사용하여 변수 유형을 표시할 수 있습니다.

import (
	"fmt"
)

func main() {

	var count int = 42
	var message string = "go find type"
	var isCheck bool = true
	var amount float32 = 10.2

	fmt.Printf("variable count=%v is of type %T \n", count, count)
	fmt.Printf("variable message='%v' is of type %T \n", message, message)
	fmt.Printf("variable isCheck='%v' is of type %T \n", isCheck, isCheck)
	fmt.Printf("variable amount=%v is of type %T \n", amount, amount)
}

//OutPut

variable count=42 is of type int
variable message='go find type' is of type string
variable isCheck='true' is of type bool
variable amount=10.2 is of type float32
로그인 후 복사

reflect 패키지 기능을 사용하세요.

위 방법이 유용하지 않거나 %T에 대한 추가 정보를 얻으려는 경우 유형의 경우 Reflect 패키지의 TypeOf 및 ValueOf().Kind 함수를 사용할 수 있습니다.

reflect.TypeOf()

TypeOf 메서드에 변수 값을 전달하면 변수 유형이 반환됩니다. 물론 변수를 전달할 수도 있지만, 변수 대신 변수 값을 직접 전달하는 것도 지원됩니다. 코드는 다음과 같습니다.

fmt.Printf("%v", reflect.TypeOf(10))
//int
fmt.Printf("%v", reflect.TypeOf("Go Language"))
//string
로그인 후 복사

다음은 다양한 변수 유형의 전체 예입니다.

package main

import (
	"fmt"
	"reflect"
)

func main() {

	var days int = 42
	var typemessage string = "go find type"
	var isFound bool = false
	var objectValue float32 = 10.2

	fmt.Printf("variable days=%v is of type %v \n", days, reflect.TypeOf(days))
	fmt.Printf("variable typemessage='%v' is of type %v \n", typemessage, reflect.TypeOf(typemessage))
	fmt.Printf("variable isFound='%v' is of type %v \n", isFound, reflect.TypeOf(isFound))
	fmt.Printf("variable objectValue=%v is of type %v \n", objectValue, reflect.TypeOf(objectValue))
}

//OUTPUT 

variable days=42 is of type int
variable typemessage='go find type' is of type string
variable isCheck='false' is of type bool
variable amount=10.2 is of type float32
variable acounts=Savings is of type string
로그인 후 복사

Reflect.ValueOf().Kind()

ValueOf().Kind()를 사용하여 변수 유형을 가져올 수도 있습니다. Reflect.ValueOf()는 전달된 변수를 기반으로 새 값을 반환한 다음 Kind 메서드를 통해 변수 유형을 추가로 얻습니다.

package main

import (
	"fmt"
	"reflect"
)

func main() {

	var days int = 42
	var typemessage string = "go find type"
	var isFound bool = false
	var objectValue float32 = 10.2

	fmt.Printf("variable days=%v is of type %v \n", days, reflect.ValueOf(days).Kind())
	fmt.Printf("variable typemessage='%v' is of type %v \n", typemessage, reflect.ValueOf(typemessage).Kind())
	fmt.Printf("variable isFound='%v' is of type %v \n", isFound, reflect.ValueOf(isFound).Kind())
	fmt.Printf("variable objectValue=%v is of type %v \n", objectValue, reflect.ValueOf(objectValue).Kind())
}

//OUTPUT 

variable days=42 is of type int
variable typemessage='go find type' is of type string
variable isCheck='false' is of type bool
variable objectValue=10.2 is of type float32
로그인 후 복사

이 메서드의 단점은 새 변수를 생성해야 한다는 점이며, 이로 인해 메모리가 늘어날 수 있습니다. 용법.

유형 어설션 사용

이 섹션에서는 유형 어설션인 또 다른 방법을 소개합니다. 유형 판단을 수행하려면 아래에 typeofObject 메소드를 작성하세요.

func typeofObject(variable interface{}) string {
	switch variable.(type) {
	case int:
		return "int"
	case float32:
		return "float32"
	case bool:
		return "boolean"
	case string:
		return "string"
	default:
		return "unknown"
	}
}

fmt.Println("Using type assertions")
fmt.Println(typeofObject(count))
fmt.Println(typeofObject(message))
fmt.Println(typeofObject(isCheck))
fmt.Println(typeofObject(amount))

//OUTPUT
Using type assertions
int
string
boolean
float64
로그인 후 복사

이 메소드의 장점은 유형을 그룹화할 수 있다는 것입니다. 예를 들어 모든 int32, int64, uint32 및 uint64 유형을 "int"로 식별할 수 있습니다.

【관련 추천: Go 비디오 튜토리얼, 프로그래밍 교육

위 내용은 golang에서 변수가 문자열인지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Golang을 사용하여 파일을 안전하게 읽고 쓰는 방법은 무엇입니까? Golang을 사용하여 파일을 안전하게 읽고 쓰는 방법은 무엇입니까? Jun 06, 2024 pm 05:14 PM

Go에서는 안전하게 파일을 읽고 쓰는 것이 중요합니다. 지침은 다음과 같습니다. 파일 권한 확인 지연을 사용하여 파일 닫기 파일 경로 유효성 검사 컨텍스트 시간 초과 사용 다음 지침을 따르면 데이터 보안과 애플리케이션의 견고성이 보장됩니다.

Golang 프레임워크를 사용할 때 주의해야 할 일반적인 사항은 무엇입니까? Golang 프레임워크를 사용할 때 주의해야 할 일반적인 사항은 무엇입니까? Jun 06, 2024 pm 01:33 PM

Golang 프레임워크를 사용할 때 다음 사항에 주의해야 합니다. 라우팅 오류를 방지하려면 경로가 요청과 일치하는지 확인하세요. 성능 저하를 방지하려면 미들웨어를 주의해서 사용하세요. 성능 문제나 충돌을 방지하려면 데이터베이스 연결을 적절하게 관리하세요. 오류 래퍼를 사용하여 오류를 처리하고 코드가 명확하고 디버그하기 쉬운지 확인하세요. 평판이 좋은 소스로부터 타사 패키지를 얻고 패키지를 최신 상태로 유지하세요.

Golang에서 미리 정의된 시간대를 사용하는 방법은 무엇입니까? Golang에서 미리 정의된 시간대를 사용하는 방법은 무엇입니까? Jun 06, 2024 pm 01:02 PM

Go에서 미리 정의된 시간대를 사용하는 단계는 다음과 같습니다. "time" 패키지를 가져옵니다. LoadLocation 함수를 통해 특정 시간대를 로드합니다. Time 객체 생성, 시간 문자열 구문 분석, 날짜 및 시간 변환 수행 등의 작업에 로드된 시간대를 사용합니다. 미리 정의된 시간대 기능의 적용을 설명하기 위해 다양한 시간대를 사용하여 날짜를 비교합니다.

Golang 프레임워크 및 D 언어 프레임워크: 고성능 프로그래밍에 대한 유사한 접근 방식 Golang 프레임워크 및 D 언어 프레임워크: 고성능 프로그래밍에 대한 유사한 접근 방식 Jun 06, 2024 pm 01:09 PM

Go와 D 프레임워크 모두 단순성, 확장성 및 사용 편의성을 갖춘 고성능 웹 애플리케이션을 구축하는 데 사용할 수 있습니다. Go 프레임워크: Echo(경량 웹 프레임워크), Gin(REST API 및 복합 웹 애플리케이션), Gorilla(공통 작업 툴킷) D 프레임워크: Tango(고성능 웹 애플리케이션 개발), Dodo(풀스택 웹 프레임워크), Viper( ORM 프레임워크) 성능: Go와 D 프레임워크는 성능이 비슷하고 구별이 어렵습니다. 동시성: Go 코루틴은 경량 병렬성을 제공하고, D 순수 스레드 모델은 미세한 제어를 제공합니다. 구문: Go 구문은 간단하고, D 구문은 복잡하고 기능이 풍부합니다. 선택 특정 응용 프로그램 요구 사항 및 개발에 따라 다릅니다.

자신에게 적합한 golang 프레임워크를 선택하는 방법: 단계별 가이드 자신에게 적합한 golang 프레임워크를 선택하는 방법: 단계별 가이드 Jun 06, 2024 pm 12:52 PM

요구 사항(애플리케이션 유형, 확장성, 성능, 커뮤니티 지원)을 평가하고 옵션(Gin, Echo, Beego, Buffalo, Fiber)을 탐색하여 요구 사항에 가장 적합한 Go 프레임워크를 선택하세요. 예를 들어, 가볍고 고성능을 원한다면 Gin이 좋은 선택입니다.

RESTful API를 구축하고 Golang을 사용하여 웹소켓을 통합하는 방법은 무엇입니까? RESTful API를 구축하고 Golang을 사용하여 웹소켓을 통합하는 방법은 무엇입니까? Jun 06, 2024 pm 12:56 PM

RESTful API를 구축하고 Golang에 웹소켓을 통합하는 단계: 종속성 설치, API 처리 기능 작성, WebSocket 업그레이드 기능 생성, GorillaMux를 사용하여 경로 등록, HTTP 서버 시작, 실제로 간단한 채팅방 만들기: 메시지 구조 정의, API 처리 기능 작성 WebSocket 연결을 처리하기 위해

Golang 프레임워크와 Swift 프레임워크: 모바일 개발에 대한 논쟁과 사실 Golang 프레임워크와 Swift 프레임워크: 모바일 개발에 대한 논쟁과 사실 Jun 06, 2024 pm 02:57 PM

모바일 개발에서는 크로스 플랫폼 호환성과 손쉬운 유지 관리가 필요한 애플리케이션의 경우 강력한 크로스 플랫폼 호환성과 높은 동시성 처리 기능이라는 장점이 있기 때문에 Golang 프레임워크가 더 좋습니다. iOS용으로 특별히 개발된 성능 중심 애플리케이션의 경우 Swift 프레임워크는 iOS에 대한 최적화, 강력한 유형 시스템, 풍부한 라이브러리 등의 장점을 갖고 있기 때문에 더 적합합니다.

Golang 프레임워크와 Elixir 프레임워크: 동시 프로그래밍에 대한 독특한 관점 Golang 프레임워크와 Elixir 프레임워크: 동시 프로그래밍에 대한 독특한 관점 Jun 06, 2024 pm 01:04 PM

Golang의 Goroutine과 Elixir의 ErlangVM은 고유한 동시 프로그래밍 모델을 제공합니다. Golang은 경량 병렬 스레드(고루틴)를 사용하여 단일 프로세스에서 작업을 효율적으로 예약합니다. Elixir는 Erlang 가상 머신(BEAM)을 기반으로 하며 프로세스 메커니즘을 통해 동시성을 표현합니다. 실제 사례에서는 효율성을 높이기 위해 Goroutine 또는 ErlangVM을 사용하여 크롤링 작업을 병렬로 실행할 수 있습니다.

See all articles