028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

Go语言数据类型

Go语言数据类型

变量

关键字var用来定义变量,有两种定义方式,如下:

创新互联专业为企业提供西吉网站建设、西吉做网站、西吉网站设计、西吉网站制作等企业网站建设、网页设计与制作、西吉企业网站模板建站服务,十多年西吉做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

类型长度默认值说明
bool 1 false
byte 1 0 unit8
int,unit 4,8 0 默认整数类型
int8,unit8 1 0 -128~127,0~255
int16,uint16 2 0 -32768~32767,0~65535
int32,uint32 4 0 -21亿~21亿,0~42亿
int64,uint64 8 0
float32 4 0.0
float64 8 0.0 默认浮点类型
complex64 8
complex128 16
rune 4 0 unicode point,int32
unitptr 4,8 0 足以存指针

支持八进制,十六进制,以及科学计数法的math模块小例子如下:

package main

import (
    "fmt"
    "math"
)
func main(){
    //二进制,八进制,十六进制以及int8长度小例子
    a,b,c := 102,0132,0x33
    fmt.Printf("0b%b,%#o,%#x\n",a,b,c)
    fmt.Println(math.MinInt8,math.MaxInt8)
    //浮点数小例子:要注意小数位的精度
    var d float32 = 12.34141592777
    var e float64 = 12.344566346516346145453453454546562111
    var f float32 = 12.6
    fmt.Println(d,e,f)
    fmt.Printf("%v---%v----%v",d,e,f)
}

引用类型

主要是特指一下的三种类型:

内置函数new按照指定的类型长度分配零值内存,返回指针。并不关心类型内部构造和初始化方式。而引用类型则必须使用make函数创建,编译器会将make转换为目标类型专用的创建函数(指令),以确保完成内部内存分配和相关属性的初始化。

package main
import(
    "fmt"
)
func mkslice() []int{
    s : = make([]int,0,10)
    s = append(s,100)
    return s
}
func mkmap() map[string] int{
    m := make(map[string]int)
    m["a"] = 1
    return m
}
func main(){
    m := mkmap()
    fmt.Println(m["a"])
    s := mkslice()
    fmt.Println(s[0])
}

new函数可以为引用类型分配内存,但这是不完整创建。以字典为例,它仅仅分配了字典类型本身所需要的内存,但没有分配键值存储的内存,也没有初始化散列桶等内部属性,因此无法正常工作.

package main
import(
    "fmt"
)
func main(){
    p := new(map[string]int}
    m := *p
    m["a"] = 1
    fmt.Println(m)

类型转换

隐式转换造成的问题要远大于显式转换,除了常量,别名类型以及未命名类型外,go还强制要求使用显式类型转换,加上不支持操作符重载,所以我们总是能确定语句表达的明确含义。

自定义类型

使用关键字type定义用户自定义数据类型,包括基于现有基础类型的构建,或者是结构体,函数类型等。


文章标题:Go语言数据类型
文章链接:http://www.tsicrk.com/article/gcedii.html

其他资讯

让你的专属顾问为你服务

2.1772s