ホームページ  >  記事  >  バックエンド開発  >  Go言語にはどのようなデータ型がありますか?

Go言語にはどのようなデータ型がありますか?

青灯夜游
青灯夜游オリジナル
2021-06-07 14:34:305213ブラウズ

GO言語のデータ型は次のとおりです。1。ブール型; 2.数値タイプ(整数と浮動小数点タイプに分割できます); 3.文字列タイプ; 4.ポインタータイプ; 5.配列タイプ。 6. 構造化タイプ; 7. チャネルタイプ; 8. ファンクションタイプ; 9. スライスタイプ; 10. インターフェースタイプ; 11. マップタイプ。

Go言語にはどのようなデータ型がありますか?

このチュートリアルの動作環境: Windows 10 システム、GO 1.11.2、Dell G3 コンピューター。

Go 言語は静的に型付けされたプログラミング言語であり、Go プログラミング言語では、データ型を使用して関数と変数を宣言します。データ型の登場は、データを必要なメモリサイズの異なるデータに分割することであり、プログラミングの際、大きなデータを使用する必要がある場合にのみ大きなメモリを申請することで、メモリを最大限に活用することができます。コンパイラーはコンパイル時に、各値の型を認識している必要があります。これにより、コンパイラーは、この値に割り当てるメモリーの量と、この割り当てられたメモリーが何を表すかを認識できるようになります。

#基本的なデータ型の説明

TypeDescription##uintuint8uint16 uint32uint64intint8int16int32int64byteruneuintptr uintptr 型は、特に Go 言語が C 言語関数ライブラリまたはオペレーティング システム インターフェイスと対話する場合の、低レベル プログラミングでのみ必要です。 #float32IEEE-754 32 ビット浮動小数点数IEEE-754 64 -bit 浮動小数点数32 ビットの実数および虚数 64 実数と虚数
32 ビットまたは 64 ビット
符号なし 8ビット整数型(0~255)
符号なし16ビット整数型(0~65535)
符号なし 32 ビット整数型 (0 ~ 4294967295)
符号なし 64 ビット整数型 (0 ~ 18446744073709551615)
32 ビットまたは 64 ビット
符号付き 8 ビット整数 (- 128 ~ 127)
符号付き 16 ビット整数 (-32768 ~ 32767)
符号付き 32 ビット整数 (-2147483648 ~ 2147483647)
符号付き 64 ビット整数 (-9223372036854775808 ~ 9223372036854775807)
uint8 エイリアス (タイプ byte = uint8)
int32 エイリアス (タイプ rune = int32)、を表します。 Unicode コード
符号なし整数型。ポインタの格納に使用されます。特定のビットのサイズは指定されていませんが、ポインタを収容するには十分な大きさです。
##float64
complex64
complex128

整数型

整数データは signedunsigned2 つのタイプ

## の 2 つのカテゴリに分類されます。 #Signed: int, int8, int16, int32, int64

Unsigned: uint, uint8, uint16, uint32, uint64, byteDifferent bits 整数間の違い数値の型は、整数範囲のサイズを格納できることです。

符号付き型は任意の整数を格納でき、符号なし型は自然数のみを格納できます

int と uint のサイズシステムによって異なります。32 ビット システムの場合は int32 と uint32 を表し、64 ビット システムの場合は int64 と uint64

byte は uint8 に似ており、一般に単一の文字を格納するために使用されます

プログラムが正しく実行されることを確認するには、小さなスペースを占めるデータ型を使用するようにしてください。

fmt.Printf("%T", var_name) 出力変数の型

安全ではありません。 Sizeof(var_name) 変数が占めるバイト数を表示します。

浮動小数点型

浮動小数点型は 10 進数型であり、10 進数を格納できます。例: 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 type

5 です。通常の状況では、float32

6 よりも精度が高いため、float64 を使用する必要があります。0.123 は .123 と省略できます。科学表記法もサポートしています: 5.1234e2 は 512.34 では同等です

Character

Golang には特別な文字タイプ はありません 単一の文字 (文字) を保存したい場合、一般的には byte を使用して保存します。

文字列は、固定長の文字で接続された一連の文字です。 Go の文字列はシングルバイトで接続されています。つまり、従来の文字列は文字で構成されていますが、

Go の文字列は異なり、バイト で構成されています。

    文字は単一引用符でのみ囲むことができ、二重引用符では囲むことはできません。二重引用符で文字列を囲むことはできません。
  • type 値を直接出力すると、対応する文字の ASCII コードが出力されます。値
  • 対応する文字を出力したい場合は、フォーマットされた出力を使用する必要があります。
  • Go 言語の文字は UTF-8 エンコーディングを使用し、英語の文字は 1 文字を占め、中国語の文字は 3 文字を占めます
  • Go では文字の本質は整数であり、直接出力する場合はその文字に対応する UTF-8 エンコードコードの値になります。
  • 数値を変数に直接割り当てることができ、出力の書式設定時に %c はその数値に対応する Unicode 文字を出力します。
  • 文字タイプは計算可能であり、 integer 。すべて対応する Unicode コードがあるためです。
  • 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 を超える場合 (中国語の文字の保存など)、バイト型は使用できません。

文字型の本質に関する議論

  • 文字型はコンピュータに保存されており、文字に対応するコード値を保存する必要があります (整数) を確認してください

    ストレージ: 文字--> コード値--> バイナリ-->ストレージ

    読み取り:バイナリ --> コード値 --> 文字 --> Read

  • 文字とコード値の対応関係は、文字コード テーブルによって決まります (指定されています) )

  • Go 言語のエンコードは UTF-8 に統一されています。非常に便利で統一されており、エンコード文字化けの問題もなくなりました

Boolean 型

Boolean 型は bool 型とも呼ばれます。データは true または false の値のみを許可します。

bool 型は 1 バイトを占めます。

bool 型は論理演算に適しており、通常はプロセス制御に使用されます。

String

文字列は、固定長の文字を連結したシーケンスです。 Go の文字列は単一バイトから連結されます。 Go 言語の文字列のバイトは、Unicode テキストを識別するために UTF-8 エンコーディングを使用します。

1. 文字列に値が割り当てられると、変更することはできません:

Go では文字列は不変です。 #2. 文字列の 2 つの識別形式

    二重引用符はエスケープ文字を認識します
  • var str = "abc\nabc" //输出时会换行

    # #バックティック、改行や特殊文字を含む文字列のネイティブ形式で出力すると、攻撃を防ぎ、ソース コードやその他の効果を出力できます
  • var str string = `abc\nabc` //输出时原样输出,不会转义
  • 3. 文字列の結合方法" "
  • var str string = "hello " + "world"
    str += "!"
4. 1 行の文字列が長すぎて複数行の文字列を使用する必要がある場合は、次の処理を使用できます。

##基本データ型、変数は値を格納します (値型とも呼ばれます)

変数のアドレスを取得するには、var num int などの & を使用してアドレスを取得します。番号:&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 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。