Heim > Backend-Entwicklung > Golang > Welche Datentypen gibt es in der Go-Sprache?

Welche Datentypen gibt es in der Go-Sprache?

青灯夜游
Freigeben: 2021-06-07 14:35:29
Original
5258 Leute haben es durchsucht

Die Datentypen der Go-Sprache sind: 1. Boolescher Typ (kann in Ganzzahl- und Gleitkommatyp unterteilt werden); 5. Strukturierter Typ; 7. Kanaltyp; 9. Slice-Typ; 11. Kartentyp;

Welche Datentypen gibt es in der Go-Sprache?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, GO 1.11.2, Dell G3-Computer.

Go-Sprache ist eine statisch typisierte Programmiersprache. In der Go-Programmiersprache werden Datentypen zum Deklarieren von Funktionen und Variablen verwendet. Das Aufkommen von Datentypen besteht darin, Daten in Daten mit unterschiedlichen erforderlichen Speichergrößen aufzuteilen. Beim Programmieren müssen Sie nur dann großen Speicher beantragen, wenn Sie große Datenmengen verwenden müssen, damit Sie den Speicher vollständig nutzen können. Wenn der Compiler kompiliert, muss er den Typ jedes Werts kennen, damit der Compiler weiß, wie viel Speicher er für diesen Wert zuweisen muss und was dieser zugewiesene Speicher darstellt.

Grundlegende Datentypbeschreibung

uint64Vorzeichenlose 64-Bit-Ganzzahl Typ (0 bis 18446744073709551615). Vorzeichenbehaftete 16-Bit-Ganzzahl (-32768 32767) 808 bis 9223372036854775807)Byteuint8 Alias ​​( Typ Byte = uint8) runeint32-Alias ​​(Typ rune = int32), der einen Unicode-Code darstelltuintptrUnsigned Integer, der zum Speichern eines Zeigers verwendet wird, ist ein vorzeichenloser Integer-Typ, der nicht angegeben wird eine bestimmte Bitgröße, ist aber groß genug, um Zeiger aufzunehmen. 64-Bit reelle und imaginäre Zahlen

Integer

Integer-Daten sind in zwei Kategorien unterteilt, 有符号无符号zwei Typen

Signiert: int, int8, int16, int32, int64

Unsigned: uint, uint8, uint16, uint32, uint6 4, Byte
Der Unterschied zwischen Ganzzahltypen mit unterschiedlichen Ziffern besteht in der Größe des Bereichs der Ganzzahlzahlen, die gespeichert werden können.

Vorzeichenbehaftete Typen können jede Ganzzahl speichern, während vorzeichenlose Typen nur natürliche Zahlen speichern können.

Die Größen von int und uint hängen zusammen Das System, 32 Das Bitsystem repräsentiert int32 und uint32, und wenn es sich um ein 64-Bit-System handelt, stellt es int64 und uint64 dar

Byte ähnelt uint8 und wird im Allgemeinen zum Speichern eines einzelnen Zeichens verwendet

Um sicherzustellen, dass die Das Programm läuft ordnungsgemäß. Versuchen Sie, Datentypen zu verwenden, die weniger Platz beanspruchen Typ

Der Gleitkommatyp ist auch ein Dezimaltyp, der Dezimalzahlen speichern kann. Beispiel: 6,6, -12,34

1. Eine kurze Erklärung der Speicherform von Gleitkommazahlen = Vorzeichenbit + Exponentenbit + Mantissenbit Verlust der Genauigkeit. -123.0000901

package main

import "fmt"

func main() {
    
    var num1 float32 = -123.0000901
    var num2 float64 = -123.0000901
    fmt.Println("num1 = ", num1, "num2 = ", num2);
}
Nach dem Login kopieren

Erklärung: Die Genauigkeit von float64 ist genauer als die von float32

Erklärung: Wenn wir eine hochpräzise Zahl speichern möchten, sollten wir float64 wählen

3. Der Gleitkommaspeicher ist in drei Teile unterteilt Teile: Vorzeichenbit + Exponentenbit + Mantissenbit, während des Speichervorgangs geht die Genauigkeit verloren

4 Der Gleitkommatyp von Golang ist standardmäßig der Typ float64

5. Unter normalen Umständen sollte float64 verwendet werden Als float32

6 kann 0,123 als .123 abgekürzt werden und unterstützt auch die wissenschaftliche Schreibweise: 5.1234e2 entspricht 512,34

Zeichen

Es gibt keinen Sonderzeichentyp in Golang

, wenn Sie ein einzelnes Zeichen speichern möchten (Buchstabe), im Allgemeinen wird zum Speichern ein Byte verwendet.

Eine Zeichenfolge ist eine Folge von Zeichen, die durch eine feste Zeichenlänge verbunden sind. Go-Strings sind durch einzelne Bytes verbunden, was bedeutet, dass herkömmliche Strings aus Zeichen bestehen, aber

Go-Strings sind anders, sie bestehen aus Bytes

.

Zeichen können nur in einfache Anführungszeichen gesetzt werden, nicht in doppelte Anführungszeichen. Wenn wir den Typwert direkt ausgeben, geben wir den ASCII-Codewert des entsprechenden Zeichens aus.

Wenn wir das entsprechende Zeichen ausgeben möchten , Formatierte Ausgabe ist erforderlichGo-Sprachzeichen verwenden UTF-8-Codierung, englische Buchstaben belegen ein Zeichen und chinesische Zeichen belegen drei Zeichen

    In Go ist die Essenz eines Zeichens eine Ganzzahl, die der entspricht Zeichen UTF-8-codierter Codewert.
  • Sie können einer Variablen direkt eine Zahl zuweisen. Beim Formatieren der Ausgabe gibt %c dann das der Zahl entsprechende Unicode-Zeichen aus Unicode-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)
    }
    Nach dem Login kopieren
  • Wenn die von uns gespeicherten Zeichen jedoch größer als 255 sind, z. B. beim Speichern chinesischer Zeichen, kann der Bytetyp derzeit nicht gespeichert werden. Sie können zum Speichern den Typ uint oder int verwenden Diskussion über das Wesen von Zeichentypen
  • Um den Zeichentyp im Computer zu speichern, müssen Sie den Codewert (Ganzzahl) finden, der dem Zeichen entspricht
Speicherung: Zeichen--> Binär--> Lesen: Binär--> Zeichen --> Die entsprechende Beziehung zwischen Zeichen und Codewerten wird durch die Zeichenkodierungstabelle bestimmt angegeben ist)

Die Kodierung der Go-Sprache ist in UTF -8 vereinheitlicht. Sehr praktisch, sehr einheitlich, keine Probleme mehr mit verstümmelter Codierung

Boolescher Typ

    Der boolesche Typ wird auch als Bool-Typ bezeichnet. Bool-Typ-Daten erlauben nur den Wert wahr oder falsch. Der Bool-Typ belegt 1 Byte. Der Bool-Typ ist Geeignet für logische Operationen und wird im Allgemeinen zur Prozesssteuerung verwendet.
  • String

    Ein String ist eine Zeichenfolge, die durch eine Reihe von Zeichen fester Länge verbunden ist. Die Zeichenfolgen von Go werden aus einzelnen Bytes verkettet. Die Bytes der Go-Sprachzeichenfolgen verwenden die UTF-8-Codierung, um Unicode-Text zu identifizieren.

    1 Sobald einer Zeichenfolge ein Wert zugewiesen wurde, kann sie nicht mehr geändert werden:

    Zeichenfolgen sind in Go unveränderlich.
  • 2. Zwei Identifikationsformen von Zeichenfolgen

  • doppelte Anführungszeichen, die Escape-Zeichen

    var str = "abc\nabc" //输出时会换行
    Nach dem Login kopieren

Backticks erkennen und sie in der nativen Form der Zeichenfolge ausgeben, einschließlich Zeilenumbrüchen und Sonderzeichen, was Angriffe verhindern kann , Quellcode und andere Effekte ausgeben

3. String-Spleißmethode „+“

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

4 Wenn eine String-Zeile zu lang ist und mehrere String-Zeilen verwendet werden müssen, können Sie die folgende Verarbeitung verwenden

var str string = "hello " + "world"
str += "!"
Nach dem Login kopieren

Zeiger

Grundlegende Datentypen, Variablen speichern Werte, auch Werttypen genannt

Um die Adresse einer Variablen zu erhalten, verwenden Sie &, z. B. var num int, um die Adresse von num zu erhalten: &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中,默认值也叫做零值。

基本数据类型默认值如下:

Typ Beschreibung
uint 32-Bit oder. 64-Bit
uint 8 Vorzeichenlose 8-Bit-Ganzzahl ( 0 bis 255).
Der Typ uintptr wird nur in der Low-Level-Programmierung benötigt, insbesondere wenn die Go-Sprache mit der Funktionsbibliothek der C-Sprache oder der Betriebssystemschnittstelle interagiert.
float32 IEEE-754 32-Bit-Gleitkommazahl
float64 IEEE-754 64-Bit-Gleitkommazahl
complex64 32-Bit-Real- und Imaginärzahl Zahlen
complex128
数据类型默认值
整型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("")
}
Nach dem Login kopieren

推荐学习:Golang教程

Das obige ist der detaillierte Inhalt vonWelche Datentypen gibt es in der Go-Sprache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage