>  기사  >  백엔드 개발  >  Go 언어에는 어떤 데이터 유형이 있나요?

Go 언어에는 어떤 데이터 유형이 있나요?

青灯夜游
青灯夜游원래의
2021-06-07 14:34:305213검색

go 언어의 데이터 유형은 다음과 같습니다. 1. 부울 유형, 2. 숫자 유형(정수 유형 및 부동 소수점 유형으로 나눌 수 있음), 4. 포인터 유형, 6. 구조화된 유형 ; 7. 채널 유형 8. 기능 유형 10. 인터페이스 유형

Go 언어에는 어떤 데이터 유형이 있나요?

이 튜토리얼의 운영 환경: 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비트 실수 및 허수

Integer

정수 데이터는 有符号无符号두 가지 유형

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) 변수가 차지하는 바이트를 확인하세요

부동 소수점 type

부동소수점형도 소수점을 저장할 수 있는 소수점형입니다. 예를 들어, 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

Character

단일 문자를 저장하려는 경우 특수 문자 유형이 없습니다. (문자), 일반적으로 바이트를 사용하여 저장합니다.

문자열은 고정된 길이의 문자로 연결된 일련의 문자입니다. Go의 문자열은 단일 바이트로 연결됩니다. 즉, 전통적인 문자열은 문자로 구성되지만

Go의 문자열은 다릅니다. 바이트로 구성됩니다.

    문자는 큰따옴표가 아닌 작은따옴표로만 묶을 수 있습니다. 큰따옴표는 문자열을 묶습니다.
  • 타입 값을 직접 출력할 때 해당 문자의 ASCII 코드 값을 출력합니다.
  • 해당 문자를 출력하고 싶을 때 , 포맷된 출력이 필요합니다
  • Go 언어 문자는 UTF-8 인코딩을 사용하며, 영문자는 한 문자, 한자는 세 문자를 차지합니다.
  • Go에서 문자의 본질은 직접 출력할 때 정수에 해당합니다. 문자 UTF-8로 인코딩된 코드 값입니다.
  • 변수에 숫자를 직접 할당할 수 있으며, 출력 형식을 지정할 때 %c는 숫자에 해당하는 유니코드 문자를 출력합니다.
  • 문자 유형은 모두 해당 유니코드를 가지고 있기 때문에 정수와 동일하게 연산할 수 있습니다. Code
  • 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)
    }

하지만 한자 저장과 같이 저장하는 문자가 255자를 초과하는 경우에는 바이트 유형을 저장할 수 없습니다. 이때 uint 또는 int 유형을 사용하여 저장할 수 있습니다

토론 문자 유형의 본질

  • 문자 유형을 컴퓨터에 저장하려면 해당 문자에 해당하는 코드 값(정수)을 찾아야 합니다.

    저장: 문자--> --> 저장

    읽기: 바이너리--> 코드 값 --> 문자 --> 읽기

  • 문자와 코드 값 간의 대응 관계는 문자 인코딩 테이블에 의해 결정됩니다. 지정)

  • Go 언어의 인코딩은 UTF -8로 통일됩니다. 매우 편리하고 통일되어 있어 더 이상 잘못된 인코딩 문제가 발생하지 않습니다

Boolean 유형

Boolean 유형은 bool 유형이라고도 하며, bool 유형 데이터는 true 또는 false 값만 허용합니다.

bool 유형은 1바이트를 차지합니다

bool 유형은 논리 연산에 적합하며 일반적으로 프로세스 제어에 사용됩니다.

String

문자열은 일련의 고정 길이 문자로 연결된 문자 시퀀스입니다. Go의 문자열은 단일 바이트로 연결됩니다. Go 언어 문자열의 바이트는 유니코드 텍스트를 식별하기 위해 UTF-8 인코딩을 사용합니다

1. 문자열에 값이 할당되면 수정할 수 없습니다.

문자열은 Go에서 변경할 수 없습니다.

2. 문자열의 두 가지 식별 형식

  • 이스케이프 문자

    var str = "abc\nabc" //输出时会换行

  • 백틱을 인식하고 공격을 방지할 수 있는 줄 바꿈 및 특수 문자를 포함하여 문자열의 기본 형식으로 출력하는 큰따옴표 , 출력 소스 코드 및 기타 효과

    var str string = `abc\nabc` //输出时原样输出,不会转义

3. 문자열 접합 방법 "+"

var str string = "hello " + "world"
str += "!"

4. 한 줄의 문자열이 너무 길어서 여러 줄의 문자열을 사용해야 하는 경우 다음 처리를 사용할 수 있습니다

//正确写法
str := "hello" + 
	" world!"
fmt.Println(str)

//错误写法
str := "hello "
	+ "world!"
fmt.Println(str)

포인터

  • 기본 데이터 유형, 변수는 값 저장, 값 유형이라고도 함

  • 변수의 주소를 얻으려면 &(예: var num int)를 사용하여 num의 주소를 얻습니다: &num

  • 指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值,比如: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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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