美文网首页
go常见数据类型

go常见数据类型

作者: bug去无踪 | 来源:发表于2019-02-26 16:58 被阅读0次

    变量定义

    1.单个变量:var variableName type
    定义并初始化:var variableName type=value
    例如:var a string="hello world"

    2.多个变量:var vname1, vname2, vname3 type
    定义并初始化:var vname1, vname2, vname3=v1,v2,v3
    例如:var a,b,c =1,"hello",3.14

    3.方法内部定义变量方式
    单个: vname:=values
    多个变量:vname1, vname2, vname3 := v1, v2, v3

    4.常量的定义 关键字const
    const constantName = value
    例如:const PI=3.14125926 const a="hello"

    go内置基础数据类型

    1.布尔类型 bool 默认值为:false
    例如:var isActive bool

    2.数值类型
    2.1 整数数值类型
    无符号:byte, uint8, uint16, uint32, uint64
    有符号:rune, int8, int16, int32, int64
    其中rune是int32的别称,byte是uint8的别称
    默认值均是 0
    注意:这些类型的变量之间不允许互相赋值或操作
    2.1 浮点数值类型
    类型有float32和float64两种 默认float64 默认值均是 0

    3.字符串类型 string
    var s string = "hello"
    Go中字符串是不可变的,不能进行如下操作 s[0]='c'
    但可以进行切片操作:a:=s[2:]
    字符串可以用+拼接:str:=s+"world"
    原样输出字符串: 使用`` 括起的字符串为Raw字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出

    4.枚举类型 iota
    iota 这个关键字用来声明enum的时候采用,它默认开始值是0,每调用一次加1
    例如:
    const(
    x=iota //x==0
    y=iota //y==1
    z=iota //z==2
    w // 常量声明省略值时,默认和之前一个值的字面相同。这里隐式地说w = iota,因此w == 3。其实上面y和z可同样不用
    )
    const v = iota // 每遇到一个const关键字,iota就会重置,此时v == 0

    5.数组(array)、切片(slice)、集合(map)
    5.1 数组
    5.1.1 一维数组
    var arr [n]type 在[n]type中,n表示数组的长度,type表示存储元素的类型,其中长度也是数组的一部分,因此[3]int和[4]int是不同的类型
    数组声明 var arr [10]int
    a:=[3]int{1,2,3}// 声明了一个长度为3的int数组
    a:=[10]int{1,2,3} //前三个元素初始化为1、2、3,其它默认为0
    c := [...]int{4, 5, 6} // 省略长度
    5.1.2二维数组
    easyArray := [2][4]int{{1, 2, 3, 4}, {5, 6, 7, 8}}

    5.2切片(动态数组)
    slice并不是真正意义上的动态数组,而是一个引用类型。slice总是指向一个底层array,slice的声明也可以像array一样,只是不需要长度。
    声明:var fslice []int
    声明并初始化:slice := []byte {'a', 'b', 'c', 'd'}

    slice := make([]type, length, cap)// length指切片的长度 cap值切片最大容量 cap>=length
    slice1 := make([]int32, 10, 15)
    fmt.Println(len(slice1), cap(slice1))// length=10 cap=15
    slice2 := make([]int32, 10)
    fmt.Println(len(slice2), cap(slice2)) // length=10 cap=10

    slice:=[]int{1,2,3,4,5,6}
    取切片下标在a到b范围内元素:slice[a:b] (a,b>=0&&a,b<=length(slice)-1)取出的元素包括下标a不包括下标b
    a:=slice[1:3] 下标1-3 取出的元素是slice[1]=2,slice[2]=3
    b:=slice[:3] 取出下标是0-3的元素slice[0]=1,slice[1]=2,slice[2]=3
    c:=slice[4:] 取出下标是4到(length(slice)-1的元素slice[4],slice[5]
    d:=slice[:] 取出全部元素
    append 向slice里面追加一个或者多个元素,然后返回一个和slice一样类型的slice copy 函数copy从源slice的src中复制元素到目标dst,并且返回复制的元素的个数

    5.3集合map 键值对的存储形式
    声明方式一:var numbers map[string] int
    声明方式二:numbers := make(map[string]int)
    numbers["one"] = 1 //赋值
    numbers["ten"] = 10 //赋值
    numbers["three"] = 3
    判断集合中是否存在某个key
    value, ok := numbers["one"]// key存在ok取true,不存在为false
    删除集合中的某个key元素: delete(numbers, "one")

    相关文章

      网友评论

          本文标题:go常见数据类型

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