zoukankan      html  css  js  c++  java
  • go学习笔记-基础类型

    基础类型

    布尔值

    布尔值的类型为bool,值是true或false,默认为false。

    //示例代码
    var isActive bool  // 全局变量声明
    var enabled, disabled = true, false  // 忽略类型的声明
    func testBool() {
    	var available bool  // 一般声明
    	valid := false      // 简短声明
    	available = true    // 赋值操作
    }
    

    数值类型

    整数类型有无符号和带符号两种。Go同时支持int和uint,这两种类型的长度相同,但具体长度取决于不同编译器的实现。Go里面也有直接定义好位数的类型:rune, int8, int16, int32, int64和byte, uint8, uint16, uint32, uint64。其中rune是int32的别称,byte是uint8的别称。

    需要注意的一点是,这些类型的变量之间不允许互相赋值或操作,不然会在编译时引起编译器报错。

    var a int8 = 1
    

    浮点数的类型有float32和float64两种,默认是float64。

    var b float32 = 4.67890
    

    Go还支持复数。它的默认类型是complex128(64位实数+64位虚数)。如果需要小一些的,也有complex64(32位实数+32位虚数)。复数的形式为RE + IMi,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。

    var c complex64 = 5+5i
    

    字符串

    字符串是用一对双引号("")或反引号(``)括起来定义,反引号括起的字符串为Raw字符串,它的类型是string。

    //示例代码
    var frenchHello string  // 声明变量为字符串的一般方法
    var emptyString string = ""  // 声明了一个字符串变量,初始化为空字符串
    func testString() {
    	a := "abc"
    	b := `demo <>`
    }
    

    字符串是不可变的,例如下面的代码编译时会报错:cannot assign to s[0]

    var s string = "hello"
    s[0] = 'c'
    

    但如果真的想要修改怎么办呢?下面的代码可以实现:

    s := "hello"
    c := []byte(s)  // 将字符串 s 转换为 []byte 类型
    c[0] = 'c'
    s2 := string(c)  // 再转换回 string 类型
    

    可以使用+操作符来连接两个字符串:

    s := "hello,"
    m := " world"
    a := s + m
    

    错误类型

    Go内置有一个error类型,专门用来处理错误信息,Go的package里面还专门有一个包errors来处理错误:

    func testError() {
    	err := errors.New("fatal error")
    	fmt.Println(err)
    }
    

    零值

    关于“零值”,所指并非是空值,而是一种“变量未填充前”的默认值,通常为0。 此处罗列 部分类型 的 “零值”

    int     0
    int8    0
    int32   0
    int64   0
    uint    0x0
    rune    0 //rune的实际类型是 int32
    byte    0x0 // byte的实际类型是 uint8
    float32 0 //长度为 4 byte
    float64 0 //长度为 8 byte
    bool    false
    string  ""
    
  • 相关阅读:
    【[AH2017/HNOI2017]礼物】
    【[ZJOI2014]力】
    FFT抄袭笔记
    【[SCOI2015]小凸玩矩阵】
    【[SDOI2017]新生舞会】
    bzoj 3277: 串
    【[ZJOI2015]诸神眷顾的幻想乡】
    【[TJOI2017]DNA】
    【[TJOI2018]碱基序列】
    【[TJOI2018]异或】
  • 原文地址:https://www.cnblogs.com/SLchuck/p/9936872.html
Copyright © 2011-2022 走看看