zoukankan      html  css  js  c++  java
  • Go

    分为两种类型:
    1.基本数据类型
            数值型:整数类型(有符号:int ; 无符号:uint;注意保小不保大),浮点类型(单精度float32/ 双精度float64  都是有符号的,精度有损失,float64精度比float32高;注意默认为float64 ,一般推荐使用float64, 精度更高)
            字符型:byte(Go语言的字符使用UTF-8编码 英文字母-1个字节,汉字-3个字节;在Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值即:var c1 byte = "a" var c2 int = "北"  可以通过格式化 %c 来输出; 
                    字符型存储到计算机中:utf-8 (unicode码)包含 ascii码
                        存储:字符--->对应码值---->二进制---->存储
                        读取:二进制--->码值--->字符---->读取
                    )
            布尔型:bool(只允许取值true和false; 占一个字节)
            字符串:string(在go中字符串是不可变的;且可以使用双引号也可以使用反引号,反引号会输出源码)
    基本数据类型默认值:
            int           0
            float32    0
            float64    0
            bool        false
            string      ""
    同基本数据类型转换:
            表达式:T(v)将值 v 转换为类型 T
            T 就是数据类型 比如:int32  int64 float32等等
            v 就是需要转换的变量;
            注意:被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化!
            var i int8 = 100
            var num int32 = int32(i)
            // i 找个变量的类型还是 int8  而num的类型为 int32
            低精度--->高精度的
    基本数据类型 与 string 互转
            int -%d float-%f  bool-%t byte-%c (具体%后跟什么可以看文档) 转  string
            1)fmt.Sprintf()  生成格式化字符串并返回字符串
                    var num1  int = 99
                    var str  string
                    str = fmt.Sprintf("%d", num1)
                    // str type string str==99  ; %q -->可以打印出 "99"
                    fmt.Printf("str type %T str==%v", str, str)  
            2) strconv 包里的函数
                    str = strconv.FormatInt(num1, 10)  // 第一个是变量,第二个是十进制
                    str = strconv.Itoa(num1) // 这个很方便,但是得强转为 int
                    strconv.FormatFloat()  // 参数比较多可以查看文档
                    strconv.FormatBool()  // z只传 bool值的变量即可
     
            string 转 int  float bool byte
            1)strconv包里的 函数
                    var str string = "true"
                    var b bool
                    // 会返回两个值:第一个是bool值,第二个err值 可以使用 _ 忽略
                    b, _ = strconv.ParseBool(str)
                    strconv.ParseInt()  // 参数参考文档
                    strconv.ParseFloat() 
            注意:无法转成功则会使用默认值 即 0 false 等
    2.派生/复杂数据类型()
            指针及其内存布局:
                1)基本数据类型,变量存的就是值,也叫值类型;
                2)获取变量的地址;可以通过 var i int = 10  fmt.Println("i 的地址==", &i)  ;   通过 &i 来查看变量i的内存的地址;
                3)指针类型,指针变量存的是一个地址,这个地址指向的空间存的才是值,比如 var ptr *int = &i ; 那这个ptr就是指针变量;ptr的类型 *int ; ptr的值就是&i(即内存地址)
                4)获取指针类型所指向的值,使用* ;比如 var ptr *int ,使用 *ptr 获取ptr指向的值,可以理解先取出ptr的值(内存地址),再根据值(内存地址)取出 值(变量的值)
                注意:指针变量类型和变量类型要保持一致
                值类型,都有对应的指针类型,形式为:*数据类型 比如int的对应的指针就是 *int ,float32 对应的指针类型就是 *float32 ,依次类推;
                值类型包括:基本数据类型int系列,float系列,bool , string, 数组和结构体struct
                应用类型:指针,slice切片,map,管道chan,interface等
                值类型和应用类型的使用特点:
                    1)值类型,变量直接存储值,内存通常在栈中分配
                    2)应用类型,变量存储的是一个地址,这个地址对应的空间才正真存储数据值,内存通常在堆中分配;
            数组
            结构体
            管道
            函数
            切片
            接口
            map
     
    后续会补充完整
  • 相关阅读:
    html 问题
    bookshelf
    requireJS 用法
    autoprefixer
    移动端 代码块
    D3 学习资源
    折线图
    iscroll 4 下拉 上拉 加载
    iscroll
    重金悬赏的微软:提交Win8漏洞以及发布Win8应用
  • 原文地址:https://www.cnblogs.com/guo-s/p/13917927.html
Copyright © 2011-2022 走看看