美文网首页
Golang学习笔记2——类型与变量

Golang学习笔记2——类型与变量

作者: MarksGui | 来源:发表于2017-10-22 16:27 被阅读22次

    1.基本类型

    类型 长度 默认值 说明
    bool 1 false 不能使用0、1代替false、true
    byte 1 0 等同于uint8
    int、uint 4、8 0 默认整数类型,根据平台,32或64位
    int8、uint8 1 0 -128 ~ 127,0 ~ 255
    int16、uint16 2 0 -32768 ~ 32767,0 ~ 65535
    int32、uint32 4 0 -(2^32 / 2) ~ (2^32 / 2 - 1),0 ~ 2^32
    int64、uint64 8 0 -(2^64 / 2) ~ (2^64 / 2 - 1),0 ~ 2^64
    float32 4 0.0
    float64 8 0.0 默认浮点数类型
    complex64 8
    complex128 16
    rune 4 0 Unicode Code Point, int32
    uintptr 4,8 0 足以存储指针的uint
    string "" 字符串,默认值为空字符串,而非NULL
    array 数组
    struct 结构体
    function nil 函数
    interface nil 接口
    map nil 字典,引用类型
    slice nil 切片,引用类型
    channel nil 通道,引用类型

    2.类型别名

    设置类型别名后可以让代码可读性更强,一目了然这个变量做什么用的:

    type (
        ByteSize int64
    )
    

    3.变量的声明与赋值

    • 变量的声明: var a int
    • 变量的赋值:a = 123
    • 声明并赋值: var a int = 123 (此时若省略类型,则编译器根据值自动推导类型)
    • 多个变量的声明

    并行方式(可以省略类型,由值推导)

    var a, b, c, int = 1, 2, 3
    

    函数内部声明变量的简写形式:

    funciont main(){
        a:= 1
    }
    

    函数多个返回值时可以用"_"忽略返回值

     a, _, c, d := 1, 3, 4
    

    4.类型转换

    • go中不存在隐式转换,所有类型转换必须显示声明
    • 转换只能发生在两种相互兼容的类型之间
    • 类型转换的格式:
    var a float32 = 1.1
    b := int(a)
    
    • 语法歧义

    如果转换的目标是指针、单向通道或没有返回值的函数类型,那么必须使用括号,以避免造成语法分解错误。

    fun main() {
        x := 100
        p := *int(&x)   //错误:cannot convert &x (type *int) to type int
                        //    invalid indirect of int(&x) (type int)
        fmt.Println(p)
    }
    

    正确的做法是用括号,让编译器将*int解析未指针类型。

    (*int)(p)
    (<-chan int)(c)
    (func())(x)
    
    

    相关文章

      网友评论

          本文标题:Golang学习笔记2——类型与变量

          本文链接:https://www.haomeiwen.com/subject/pmzguxtx.html