go 언어의 데이터 유형은 다음과 같습니다. 1. 부울 유형, 2. 숫자 유형(정수 유형 및 부동 소수점 유형으로 나눌 수 있음), 4. 포인터 유형, 6. 구조화된 유형 ; 7. 채널 유형 8. 기능 유형 10. 인터페이스 유형
이 튜토리얼의 운영 환경: Windows 10 시스템, GO 1.11.2, Dell G3 컴퓨터.
Go 언어는 정적인 유형의 프로그래밍 언어입니다. Go 프로그래밍 언어에서는 함수와 변수를 선언하는 데 데이터 유형이 사용됩니다. 데이터 유형의 출현은 데이터를 필요한 메모리 크기가 다른 데이터로 나누는 것입니다. 프로그래밍 시 빅데이터를 사용해야 하는 경우에만 대용량 메모리를 적용해야 메모리를 최대한 활용할 수 있습니다. 컴파일러는 컴파일할 때 각 값의 유형을 알아야 합니다. 그래야 컴파일러가 이 값에 할당할 메모리 양과 할당된 메모리가 무엇을 나타내는지 알 수 있습니다.
Type | Description |
---|---|
uint | 32비트 또는 64비트 |
uint 8 | 부호 없는 8비트 정수( 0~255) |
uint16 | 부호 없는 16비트 정수(0~65535) |
uint32 | 부호 없는 32비트 정수(0~4294967295) |
uint64 | 부호 없는 64비트 정수 유형(0~18446744073709551615) |
int | 32 또는 64비트 |
int8 | 부호 있는 8비트 정수(-128~127) |
int16 | 부호 있는 16비트 정수(-32768 ~32767) |
int32 | 서명된 32비트 정수(-2147483648 ~ 2147483647) |
int64 | 서명된 64비트 정수(-922337203685477 5808 ~ 9223372036854775807) |
byte | uint8 별칭( 유형 바이트 = uint8) |
rune | int32 별칭(유형 rune = int32), 유니코드 코드를 나타냅니다 |
uintptr | 부호 없는 정수, 포인터를 저장하는 데 사용됨 특정 비트 크기이지만 포인터를 수용할 만큼 충분히 큽니다. uintptr 유형은 하위 수준 프로그래밍, 특히 Go 언어가 C 언어 함수 라이브러리 또는 운영 체제 인터페이스와 상호 작용하는 경우에만 필요합니다. |
float32 | IEEE-754 32비트 부동 소수점 수 |
float64 | IEEE-754 64비트 부동 소수점 수 |
complex64 | 32비트 실수 및 허수 |
complex128 | 64비트 실수 및 허수 |
정수 데이터는 有符号
和无符号
두 가지 유형
Signed: int, int8, int16, int32, int64
Unsigned: uint, uint8, uint16, uint32, 64, 바이트
숫자가 다른 정수 유형의 차이점은 저장할 수 있는 정수 범위의 크기입니다.
Signed 유형은 모든 정수를 저장할 수 있는 반면, unsigned 유형은 자연수만 저장할 수 있습니다
int 및 uint의 크기는 다음과 관련이 있습니다. 시스템, 32 비트 시스템은 int32 및 uint32를 나타내며 64비트 시스템인 경우 int64 및 uint64를 나타냅니다.
byte는 uint8과 유사하며 일반적으로 단일 문자를 저장하는 데 사용됩니다
프로그램이 올바르게 실행되면 공간을 덜 차지하는 데이터 유형을 사용해 보세요
fmt .Printf("%T", var_name) 출력 변수 유형
unsafe.Sizeof(var_name) 변수가 차지하는 바이트를 확인하세요
부동소수점형도 소수점을 저장할 수 있는 소수점형입니다. 예를 들어, 6.6, -12.34
1. 부동 소수점 숫자의 저장 형식에 대한 간략한 설명입니다. 부동 소수점 숫자 = 부호 비트 + 지수 비트 + 가수 비트
2. 정확성 상실. -123.0000901
package main import "fmt" func main() { var num1 float32 = -123.0000901 var num2 float64 = -123.0000901 fmt.Println("num1 = ", num1, "num2 = ", num2); }
설명: float64의 정확도가 float32보다 정확합니다
설명: 고정밀 숫자를 저장하려면 float64를 선택해야 합니다
3 부동 소수점 저장소는 3개로 나누어집니다. 부분 : 부호 비트 + 지수 비트 + 가수 비트, 저장 과정에서 정확도가 손실됩니다
4. Golang의 부동 소수점 유형은 기본적으로 float64 유형입니다
5. 일반적인 상황에서는 float64가 더 정확하므로 사용해야 합니다. float32
6보다 0.123은 .123으로 축약될 수 있으며 과학적 표기법도 지원합니다. 5.1234e2는 512.34
단일 문자를 저장하려는 경우 특수 문자 유형이 없습니다. (문자), 일반적으로 바이트를 사용하여 저장합니다.
문자열은 고정된 길이의 문자로 연결된 일련의 문자입니다. Go의 문자열은 단일 바이트로 연결됩니다. 즉, 전통적인 문자열은 문자로 구성되지만Go의 문자열은 다릅니다. 바이트로 구성됩니다.
package main import "fmt" func main() { //字符只能被单引号包裹,不能用双引号,双引号包裹的是字符串 var c1 byte = 'a' var c2 byte = '0' //当我们直接输出type值时,就是输出了对应字符的ASCII码值 //'a' ==> 97 fmt.Println(c1, "--", c2) //如果我们希望输出对应字符,需要使用格式化输出 fmt.Printf("c2 = %c c2 = %c", c1, c2) }
bool 유형은 논리 연산에 적합하며 일반적으로 프로세스 제어에 사용됩니다. String 문자열은 일련의 고정 길이 문자로 연결된 문자 시퀀스입니다. Go의 문자열은 단일 바이트로 연결됩니다. Go 언어 문자열의 바이트는 유니코드 텍스트를 식별하기 위해 UTF-8 인코딩을 사용합니다1. 문자열에 값이 할당되면 수정할 수 없습니다.
문자열은 Go에서 변경할 수 없습니다.
2. 문자열의 두 가지 식별 형식var str = "abc\nabc" //输出时会换行
var str string = `abc\nabc` //输出时原样输出,不会转义
var str string = "hello " + "world" str += "!"4. 한 줄의 문자열이 너무 길어서 여러 줄의 문자열을 사용해야 하는 경우 다음 처리를 사용할 수 있습니다
//正确写法 str := "hello" + " world!" fmt.Println(str) //错误写法 str := "hello " + "world!" fmt.Println(str)
指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值,比如:var ptr *int = &num
获取指针类型所指向的值,使用:*,比如,var ptr *int,使用*ptr获取ptr指向的值
指针细节说明:
值类型,都有对应的指针类型,形式为*数据类型,比如int对应的指针就是*int,float64对应的指针类型就是*float64,依此类推。
值类型包括:基本数据类型、数组和结构体struct
值类型和引用类型使用特点:
值类型:变量直接存储值,内存通常在栈中分配
引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在堆上分配,当没有任何变量应用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收。
Golang中值类型和引用类型的区分
值类型:基本数据类型(int系列、float系列、bool、string)、数组和结构体
引用类型:指针、slice切片、map、管道chan、interface等都是引用类型
在Golang中,数据类型都有一个默认值,当程序员没有赋值时,就会保留默认值,在Golang中,默认值也叫做零值。
基本数据类型默认值如下:
数据类型 | 默认值 |
---|---|
整型 | 0 |
浮点型 | 0 |
字符串 | "" |
布尔类型 | false |
package main import "fmt" func main() { var a int var b float32 var isTrue bool var str string //这里的%v,表示按照变量的值输出 fmt.Printf("a = %v, b = %v, isTrue = %v, str = %v", a, b, isTrue, str) fmt.Println("") }
推荐学习:Golang教程
위 내용은 Go 언어에는 어떤 데이터 유형이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!