基本データ型のゴー言語

囲碁言語の基本データ型の章V

整数

タイプ 説明
UINT8 符号なし8ビット整数(0〜255)
uint16の 符号なし16ビット整数(0〜65535)
UINT32 符号なし32ビット整数(0 4,294,967,295まで)
UINT64 64ビットの符号なし整数(0から18446744073709551615)
INT8 符号付き8ビット整数(127 -128)
INT16 符号付き16ビット整数(-32768〜32767)
INT32 符号付き32ビット整数(2147483647に-2147483648)
int64モード 符号付き64ビット整数(9223372036854775807に-9223372036854775808)
  • uint8我々は知っている、あるbyteタイプ、int16対応するC言語short、タイプをint64C言語に対応したlongタイプ

特別整数

タイプ 説明
UINT オペレーティングシステムは、32ビットでありuint32、64ビットオペレーティングシステムでありますuint64
int型 オペレーティングシステムは、32ビットでありint32、64ビットオペレーティングシステムでありますint64
uintptr ポインタを格納するための符号なし整数、
  • デジタルリテラル構文

    • package main
      
      import "fmt"
      
      func main(){
          // 十进制
          var a int = 10
          fmt.Printf("%d \n", a)  // 10
          fmt.Printf("%b \n", a)  // 1010  占位符%b表示二进制
      
          // 八进制  以0开头
          var b int = 077
          fmt.Printf("%o \n", b)  // 77
      
          // 十六进制  以0x开头
          var c int = 0xff
          fmt.Printf("%x \n", c)  // ff
          fmt.Printf("%X \n", c)  // FF
      }

フロート

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

    • package main
      import (
              "fmt"
              "math"
      )
      func main() {
              fmt.Println(math.MaxFloat32)
              fmt.Println(math.MaxFloat64)
      }
      
      >>>
      3.4028234663852886e+38
      1.7976931348623157e+308

複数

  • complex64とcomplex128

  • var c1 complex64
    c1 = 1 + 2i
    var c2 complex128
    c2 = 2 + 3i
    fmt.Println(c1)
    fmt.Println(c2)
  • Complex64の実部と虚部は32ビット、complex128実数部と虚数部64です。

ブール値

  • ブールデータのみtrue(真)false(假)二つの値。

備考:

  1. ブール変数のデフォルト値がありますfalse
  2. 囲碁言語はブール整数のキャストでは許可されません。
    • これはpythonで真のための0の手段という誤っ、1ではありません
  3. 値に参加することはできませんブール演算は、他のタイプに変換することはできません。

  • ストリング

  • 文字列値の双引号 ""コンテンツやバッククォート

    • s1 := "hello"
      s2 := "你好"
  • 文字列エスケープ

    • バックスラッシュでエスケープ:\ rを\ nは、など

    • // 比如打印一个Windows平台下的一个文件路径
      package main
      import (
          "fmt"
      )
      func main() {
          fmt.Println("str := \"c:\\Code\\lesson1\\go.exe\"")
      }

複数行の文字列

  • 複数行の文字列には、抗引用符を使用する必要があります。

    • s1 := `第一行
      第二行
      第三行
      \n
      \t
      `
      fmt.Println(s1)

一般的な文字列操作

方法 入門
LEN(文字列) 長さを求めます
+またはfmt.Sprintf 文字列の連結
strings.Split 分割
strings.contains 含めるかどうかを決定します
strings.HasPrefix、strings.HasSuffix プレフィックス/サフィックス解析
strings.Index()、strings.LastIndex() 発生した部分文字列の位置
strings.Join([]の文字列、9月列) シンボルスプライシングを使用して、結合操作

バイトとルーンタイプ

  • 「文字」と呼ばれる各文字列要素の組成は、文字列または単一の取得要素を横断することによって得ることができます。単一引用符で包まれた文字(「)

    • var a := '中'
      var b := 'x'
  • 次の二つのゴー言語の文字:

    • バイトタイプは表しASCII码文字を。
      • バイト型は、実際にあるuint8タイプ
    • runeAを表すType、 UTF-8字符
      • runeそれは実際にタイプですint32
  • func main() {
      s := "hello沙河"
      for i := 0; i < len(s); i++ { //byte
          fmt.Printf("%c", s[i])
      }
      fmt.Println()
      for _, r := range s { //rune
          fmt.Printf("%c", r)
      }
    }
    
    >>>
    helloæ²æ²³
    hello沙河

文字列を変更します

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

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

型変換

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

  • 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)
    }
    
    // 将a*a + b*b的结果强制转换成float64类型

おすすめ

転載: www.cnblogs.com/zlx960303/p/12456812.html