>  기사  >  백엔드 개발  >  Go에는 몇 가지 숫자 유형이 있나요?

Go에는 몇 가지 숫자 유형이 있나요?

青灯夜游
青灯夜游원래의
2023-01-09 11:08:111781검색

Go에는 세 가지 유형의 숫자 ​​유형이 있습니다. 1. 정수 유형은 플랫폼 독립적인 정수 유형과 플랫폼 관련 정수 유형으로 나눌 수 있습니다. 차이점은 길이가 다른 CPU 아키텍처나 운영 체제에서 일관되는지 여부입니다. 2. 부동 소수점 유형은 float32와 float64로 나눌 수 있으며, 이는 각각 IEEE754의 단정밀도 및 배정밀도 부동 소수점 숫자 유형에 해당합니다. 3. 복소수는 complex128(64비트 실수 및 허수)과 complex64(32비트 실수 및 허수)의 두 가지 유형으로 나눌 수 있습니다. Complex128은 복소수의 기본 유형입니다.

Go에는 몇 가지 숫자 유형이 있나요?

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

Go 언어 시스템의 기본 데이터 유형에는 일반적으로 숫자 유형과 문자열 유형이 포함됩니다.

그리고 숫자값 유형은 정수, 부동 소수점 숫자 및 복소수로 나눌 수 있으며, 각 유형에는 서로 다른 크기의 숫자 유형이 포함됩니다. 예를 들어 부호 있는 정수에는 int8, int16, int32, int64, 등. 각 숫자 유형은 해당 크기 범위와 양수 및 음수 기호를 지원하는지 여부를 결정합니다.

Go 언어 정수(정수 유형)

Go 언어에서 정수는 플랫폼 독립적인 정수와 플랫폼 관련 정수로 구분됩니다. 주요 차이점은 이러한 정수 유형이 서로 다른 CPU 아키텍처 또는 운영 체제에서 작동한다는 것입니다. , 길이가 일정한지 여부.

플랫폼 독립적 정수

독립 정수는 부호 있는 정수와 부호 없는 정수를 구별하며, 이들이 나타내는 데이터 범위는 다릅니다.

Go에는 몇 가지 숫자 유형이 있나요?

플랫폼 관련 정수 유형

Go는 기본적으로 int, uint 및 uintptr이라는 세 가지 플랫폼 관련 정수 유형을 제공합니다.

Go에는 몇 가지 숫자 유형이 있나요?

특별 참고 사항: 이식성이 요구되는 코드를 작성할 때 이러한 유형의 길이에 크게 의존하지 마십시오.

unsafe 패키지에서 제공하는 SizeOf 함수를 통해 플랫폼에서 정수 3개의 길이를 얻을 수 있습니다.

func main() {
	var a, b = int(5), uint(6)
	var p uintptr = 0x12345678
	fmt.Println("signed integer a's length is", unsafe.Sizeof(a))
	fmt.Println("unsigned integer b's length is", unsafe.Sizeof(b))
	fmt.Println("uintptr's length is", unsafe.Sizeof(p))
}

// 打印输出
signed integer a's length is 8
unsigned integer b's length is 8
uintptr's length is 8
형식화된 출력

go는 다양한 베이스를 형식화하고 출력하는 표준 라이브러리 fmt 패키지를 제공합니다.

func main() {
	var a int8 = 66
	fmt.Printf("%b\n", a) //输出二进制:1000010
	fmt.Printf("%d\n", a) //输出十进制:66
	fmt.Printf("%o\n", a) //输出八进制:102
	fmt.Printf("%O\n", a) //输出八进制(带0o前缀):0o102
	fmt.Printf("%x\n", a) //输出十六进制(小写):42
	fmt.Printf("%X\n", a) //输出十六进制(大写):42
}

Go 언어 부동 소수점 유형(10진수 유형)

Go 언어는 두 가지 부동 소수점 유형인 float32와 float64를 제공합니다. 이는 각각 IEEE754의 단정밀도 및 배정밀도 부동 소수점 숫자 유형에 해당합니다. 기본적으로 Java의 float 및 double 유형에 해당합니다.

Go 언어는 부동 소수점 유형, 즉 10진수 유형을 표현하는 두 가지 방법을 제공하며 과학적 표기법은 10진수와 16진수라는 두 가지 표현 방법으로 나뉩니다.

소수 표기법

3.1415
.15  // 整数部分如果为0,整数部分可以省略不写
81.80
82. // 小数部分如果为0,小数点后的0可以省略不写

과학적 표기법

十进制表示法:

6674.28e-2 // 6674.28 * 10^(-2) = 66.742800
.12345E+5  // 0.12345 * 10^5 = 12345.000000

十六进制表示法:

0x2.p10  // 2.0 * 2^10 = 2048.000000
0x1.Fp+0 // 1.9375 * 2^0 = 1.937500

형식화된 출력

var f float64 = 112.676899
	// 浮点类型第一种:十进制表示法
	fmt.Printf("%f\n", f) // 112.676899
	// 浮点类型第二种:科学计数法--十进制表示法
	fmt.Printf("%e\n", f) // 1.126769e+02
	// 浮点类型第二种:科学计数法--十六进制表示法
	fmt.Printf("%x\n", f) // 0x1.c2b52502eec7dp+06

Go 언어 복수형

Go는 두 가지 복수 유형을 제공합니다. complex128 complex64의 실수 부분과 허수 부분은 모두 float32 유형이고, complex128의 실수 부분과 허수 부분은 모두 float64 유형입니다. 복소수를 명시적으로 입력하지 않은 경우 기본 유형은 complex128입니다.

Go는 세 가지 표현 방법을 제공합니다.

1. 복합 리터럴 값을 사용하여 복합 유형 변수를 직접 초기화합니다.

var c = 5 + 7i
var d = 0o123 + .12345E+5i // 83+12345i

2. Go에서 제공하는 복합 함수를 사용하여 complex128 유형 값을 만듭니다.

var c = complex(5, 6) // 5 + 6i
var d = complex(0o123, .12345E+5) // 83+12345i

3. 제공된 사전 정의된 함수 real 및 imag는 복소수의 실수부와 허수부를 얻을 수 있으며 반환 값은 부동 소수점 유형입니다

var c = complex(5, 6) // 5 + 6i
r := real(c) // 5.000000
i := imag(c) // 6.000000

확장 지식: 사용자 정의 숫자 유형

을 통해 전달할 수 있습니다. Go 언어 기본 숫자 유형을 기반으로 새로운 유형을 선언하기 위해 type 키워드가 제공됩니다.

예를 들어

type NewInt int32

NewInt는 새로 정의된 유형입니다. 기본 유형은 int32이지만 기본 유형 int32와는 다른 두 유형입니다. 직접 할당할 수 없으며 표시하고 변환해야 합니다.

type NewInt int32

	var m int = 5
	var n int32 = 6
	var a NewInt = NewInt(m) // ok
	var b NewInt = NewInt(n) // ok

물론 네이티브 유형을 직접 할당하고 사용할 수 있도록 하려면 Go에서 숫자 유형을 사용자 정의할 수 있는 유형 별칭(Type Alias) 구문을 제공합니다.

type NewInt = int32

	var m int32 = 5
	var n NewInt = m

Summary

Go에는 정수, 부동 소수점, 복소수의 세 가지 유형이 있습니다. 위의 간략한 소개를 통해 Go는 기본적으로 대부분의 주류 언어와 다르다는 것을 알 수 있습니다. 복수 유형에 대한 기본 지원과 같은 것도 다릅니다.

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

위 내용은 Go에는 몇 가지 숫자 유형이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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