基本データ型のgolang

まず、基本的なデータ型のgolang

  • 6つの基本的なデータタイプがあります。
    • 整数
    • フロート
    • 複合型
    • ブーリアン
    • 文字列型
    • バイトとルーンタイプ

1.整数

  • かどうかのシンボルに応じて2つのカテゴリに分けます

署名された(1)(範囲は負、正の数であり、0です)

  • int8、int16、int32、int64長さ、数は、バイナリを示し

  • これはuint8、それは、我々が知っているbyteタイプ、int16対応するC言語short、タイプをint64C言語に対応したlongタイプ。
  • 例:int8範囲(127 -128)の整数、正よりも負の数であります

(2)符号なし(正の数及び範囲は、0です)

  • uint8、uint16、uint32、uint64

  • 例:uint8範囲(0〜255)が整数であります

(3)特殊整数

  1. uint:32ビットオペレーティングシステムは、uint3264ビットオペレーティングシステムでありますuint64
  2. int:32ビットオペレーティングシステムは、int3264ビットオペレーティングシステムでありますint64
  3. uintptr:ポインタを格納するための符号なし整数、
  • 注:使用int及びuintタイプは、それは32ビットまたは64ビットの整数であると仮定するが、考慮することができない場合intuintは異なるプラットフォーム上で異なっていてもよいです。

(4)デジタルリテラル構文

  • Go1.13バージョンを発表デジタルリテラル構文が後、それは二進数定義進または16進浮動小数点形式で容易開発することです。表現4種類の合計。

  • 1. v := 0b00101101, 代表二进制的 101101,相当于十进制的 45
    2. v := 0o377,代表八进制的 377,相当于十进制的 255
    3. v := 0x1p-2,代表十六进制的 1 除以 2²,也就是 0.25
    4. v := 123_456 等于 123456

2.フロート

  • ゴー言語のサポート2つの浮動小数点数:float32float64

  • フロートを印刷する場合、使用できるfmt動詞とパッケージを%f次のように、:

    package main
    import (
            "fmt"
            "math"
    )
    func main() {
            fmt.Printf("%f\n", math.Pi)
            fmt.Printf("%.2f\n", math.Pi)
    }

3.複合型

  • 分割complex64complex128

  • var c1 complex64
    c1 = 1 + 2i
    var c2 complex128
    c2 = 2 + 3i
    fmt.Println(c1)
    fmt.Println(c2)
  • 実部と虚部が複数存在するcomplex64実部と虚部32、complex128実部と虚部が64

4.ブール

  • 他の言語では、それは2つのブール値truefalse

  • 注意:
    • ブール型変数のデフォルト値false
    • 言語は、ブール型に整数のキャストには許可されていません
    • 値に参加することはできませんブール演算は、他のタイプに変換することはできません。

文字列型

  • 文字列の言語の実装が使用中に入るUTF-8コーディング
  • 値は文字列で二重引用符の内容

(1)共通の文字列エスケープ

エスケープ 説明
\r キャリッジ(トップに戻ります)
\n 改行(次の行の同じ列位置)
\t タブ
\' 単一引用符
\" 二重引用符
\\ バックスラッシュ

(2)複数行の文字列

  • アンチ引用符を使用することができます

    //单行字符串
    s1 := "字符串内容"
    
    //多行字符串
    s1 := `第一行
    第二行
    第三行
    `
  • ライン間のバッククォートの変更は、文字列内の改行ようになりますが、すべてのエスケープ文字は無効であり、テキストとして出力されます。

(3)一般的に使用されるメソッド列

方法 入門
len(str) 長さを求めます
+或fmt.Sprintf 文字列の連結
strings.Split 分割
strings.contains 含めるかどうかを決定します
strings.HasPrefix,strings.HasSuffix プレフィックス/サフィックス解析
strings.Index(),strings.LastIndex() 発生した部分文字列の位置
strings.Join(a[]string, sep string) 操作に参加

6. byteruneタイプ

  • ゴー言語の文字は、2があります。byte 和 rune種類

  • 各要素は文字の文字列と呼ばれています。あなたは、文字または単一の文字列を横断することによって得ることができます。
  • 文字が包ま単一引用符を使用します

  • var a := '中'
    var b := 'x'

(1)byte

  • uint8入力するか、バイトのタイプが表すと呼ばれるASCII码キャラクターを

  • GoはUnicodeベースのテキスト処理がより便利であるように、Unicodeを処理するための特別なルーンの種類を使用して、あなたはまた、バイトタイプがデフォルトの文字列処理、パフォーマンス、およびスケーラビリティもの世話をする必要が使用することができます

(2)rune

  • runeAを表すType、 UTF-8字符

  • あなたは中国語、日本語、または他の複雑な文字を処理する必要があるときは、使用する必要があるruneタイプを。runeそれは実際にタイプですint32

(3)まとめ(byteおよびrune対照)

  • GoはUnicodeベースのテキスト処理がより便利であるように、Unicodeを処理するための特別なルーンの種類を使用して、あなたはまた、バイトタイプがデフォルトの文字列処理、パフォーマンス、およびスケーラビリティもの世話をする必要が使用することができます

  • // 遍历字符串
    func traversalString() {
        s := "hello沙河"
        for i := 0; i < len(s); i++ { //byte
            fmt.Printf("%v(%c) ", s[i], s[i])
        }
        fmt.Println()
        for _, r := range s { //rune
            fmt.Printf("%v(%c) ", r, r)
        }
        fmt.Println()
    }
    
    打印结果:
    
    // 104(h) 101(e) 108(l) 108(l) 111(o) 230(æ) 178(²) 153() 230(æ) 178(²) 179(³)
    
    // 104(h) 101(e) 108(l) 108(l) 111(o) 27801(沙) 27827(河) 
  • 我々は単にバイトで中国語を含む文字列を横断することができないので、次のUTF8は、3~4バイトの漢字をコードするので、そうでなければ、上記の例の最初の行の出力がもたらされます

  • Pythonで同様の言語の文字列と文字列の外出、バイナリストリングの長さは、その長さになるように底部層は、バイト配列であり、それらは直接バイナリフォーマットすなわちに変換することができる[]byte`タイプ。
  • ルーンの種類を表すために使用されるUTF8文字は、文字が一つ以上のバイトで構成ルーン

(4)文字列を変更します

  • 最初に変換する文字列の必要性を変更する[]runeか、[]byteへの変換が完了した後、stringどちらの変換がしますメモリの再割り当て、バイト配列をコピーします

  • func changeString() {
        s1 := "big"
        // 强制类型转换
        byteS1 := []byte(s1)
        byteS1[0] = 'p'
        fmt.Println(string(byteS1))  // "pig"
    
        s2 := "白萝卜"
        runeS2 := []rune(s2)
        runeS2[0] = '红'
        fmt.Println(string(runeS2))  // "红萝卜"
    }

7.型変換

  • 囲碁言語のみキャスト、ない暗黙の型変換。使用している場合、この構文は、変換のみの2種類の間でサポートすることができます

  • 基本的な文法のキャスト

    T(表达式)
    
    // T表示要转换的类型 ,表达式包括变量、复杂算子和函数返回值等.
  • 例としてキャスト

    func sqrtDemo() {
        var a, b = 3, 4
        var c int
        // math.Sqrt()接收的参数是float64类型,需要强制转换
        c = int(math.Sqrt(float64(a*a + b*b)))
        fmt.Println(c)
    }

おすすめ

転載: www.cnblogs.com/Mcoming/p/11967309.html
おすすめ