go基础——基本数据类型

GO语言的数据类型:

/*
        GO语言的数据类型:
        1.基本数据类型:
                布尔类型:true,false
                数值类型:整数,浮点,复数complex
                字符串:string
        2.复合数据类型
                array,slice,map,function,pointer,struct,interface,channel...

        1.值类型:存储的是数值本身,数据传递给其他变量时传递的是数据的副本。
                int,float,string,bool,array,struct
        2.引用类型:存储的是数据的内存地址,数据传递时传递的地址。默认零值是nil
                slice,map,channel,function,pointer
*/

布尔类型和数值类型

package main

import "fmt"

func main() {

        //1.bool
        var b1 bool
        b1 = true
        fmt.Printf("%T,%t\n", b1, b1)
        b2 := false
        fmt.Printf("%T,%t\n", b2, b2)

        //2.整数
        /*
                有符号,最高位表示符号位,0正,1负
                int8,-128到127
                int16,-32768到32767
                int32,-2147483648到2147483647
                int64,-9223372036854775808到9223372036854775807

                无符号8位整型,所有位都表示数值
                uint8,0到255
                uint16,0到65535
                uint32,0到4294967295
                uint64,0到18446744073709551615
        */

        //通常使用int和uint,位数根据操作系统自动选择
        //但在语法角度,int和int64不是同一种类型
        var i1 int = 1000
        var i2 int64 = 2000
        fmt.Printf("%d,%T\n", i1, i1)
        fmt.Printf("%d,%T\n", i2, i2)

        //byte:uint8的别称
        //rune:int32的别称
        var i3 uint8 = 100
        var i4 byte = i3
        fmt.Printf("%d,%T\n", i4, i4)

        //类型推断,默认为int
        var i5 = 500
        fmt.Printf("%d,%T\n", i5, i5)

        //3.浮点:float32,float64
        var f1 float32 = 3.1415926
        var f2 float64 = 3.1415926
        fmt.Printf("%f,%T\n", f1, f1) //默认保留6位小数
        fmt.Printf("%f,%T\n", f2, f2)
        fmt.Printf("%.2f,%T\n", f1, f1) //保留两位小数
        fmt.Println(f2)
}

bool,true

bool,false

1000,int

2000,int64

100,uint8

500,int

3.141593,float32

3.141593,float64

3.14,float32

3.1415926

字符串

package main

import "fmt"

/*
        字符串:
        1.概念:多个byte的集合,理解为一个字符序列
        2.语法:
                使用双引号"abc","hello"
                也可以使用`abc`,`hello`

*/
func main() {

        //1.定义字符串
        var s1 string = "彗星"
        var s2 string = `恒星`
        fmt.Printf("%s,%T\n",s1,s1)
        fmt.Printf("%s,%T\n",s2,s2)

        //2.单引号双引号区别
        s3 := 'a'
        s4 := "a"
        fmt.Printf("%d,%T\n",s3,s3)     //单引号是ASCII码,int32类型
        fmt.Printf("%s,%T\n",s4,s4)
        s5 := '天'
        fmt.Printf("%d,%T,%c,%q\n",s5,s5,s5,s5) //单引号中文,是Unicode编码

        //3.转义字符
        fmt.Println("\"haha\"")
        fmt.Println(`"haha"`)
        fmt.Println("`haha`")
        fmt.Printf("hello\tworld\n")
}

彗星,string

恒星,string

97,int32

a,string

22825,int32,天,'天'

"haha"

"haha"

`haha`

hello world

数据类型转换

package main

import "fmt"

/*
        数据类型转换:
        go语言是静态语言,定义、赋值、运算必须类型一致
        语法:Type(Value)
        注意:
                兼容的类型才能转换
                常数自动转换,变量才需要手动转换
*/
func main() {
        var a int8 = 10
        var b int16
        b = int16(a)
        fmt.Println(a, b)
}

10 10