Go基本数据类型

Go基本数据类型

整型

//以下是有符号的整型
var a int
var b int8   
var c int16
var d int32
var d int64

//以下是无符号的整型
var e uint
var f uint8
var g uint16
var h uint32
var i uint64

注意点

  1. 不同的类型不能直接作运算.
  2. int后面的数字8,16,32,64表示整型的范围.
类型 有无符号 占用存储空间 表数范围 备注
int8 1字节 [-2^{8},2^{8}-1] 前面加u为无符号整型
int16 2字节 [-2^{15},2^{15}-1]
int32 4字节 [-2^{31},2^{31}-1]
int64 8字节 [-2^{63},2^{63}-1]
  1. 没有数字的int是自动匹配系统位数的整型,即在32位系统,就相当于int32在64位系统相当于int64.但是同样不能与int32或者int64的整型直接做运算.因为,它们在本质上仍然是不同的类型.而go中对类型有强烈的要求

  2. uint8 等价 byte int32 等价 rune

var h uint8 = 65
var i byte = 'A'
fmt.Println(h, i)
if i == h {
    fmt.Println(h, i)
}
//这段代码不会出错.在go里byte与uint8是同一个类型.byte为uint8的别称


浮点型

浮点型只有两咱:float32与float64

var a float32
var b float64
var c = 2.0 //用推导式来确定变量类型时,带小数点的默认为float64

注意

  1. 同整型,float32与float64是不同的类型,不能直接做运行(包括数学运算与逻辑运算)

  2. 浮点型在各个语言中都是不能精确表示的,因此,不要对浮点型的数字做太多的数学运算.以免引起不必要的错误.可以根据精度要求,做一定的变换操作,使得计算更加精准.

字符串

字符串是用的最多的一种类型.操作也比较多样与复杂.

声明

var a string   //末初始化意味着等于""
var b = "小样"
c := "搞不定你"

//以上三种都可以

拼接

a + b  //直接用加号把两个变量连接起来
c := fmt.Sprintf("%s%s",a,b) //用Sprintf格式化方式把两个(多个)字符串拼接起来 用到fmt包
d := strings.Join(array, 拼接符) //注意第一个参数为字符串数组,第二个参数为连接符,用什么符号去连接字符串用到string包
var buffer bytes.Buffer   //用到bytes包
buffer.WriteString(a)
buffer.WriteString(b)
e = buffer.String()

var builder strings.Builder //strings包
builder.WriteString(a)
builder.WriteString(b)
f := builder.String()

注意

五种方法,第四和第五种方法效率最高.但是如果要拼接的内容太多,可以考虑用第三种方法.如果不多,建议用第四/五方法.毕竟Go是一个讲究运行效率的开发语言.

不过图方便,就用+了

转义

"\r" // 回到,回到行首
"\n" // 换行
"\t" // tab
"\"" // "
"\\" // \

以上转义字符要熟悉

多行字符串

`这是一个多行字符串
这是第二行
这是第三行
这是一个路径 :C:\windows\
这是一个双引号引起来的东西"内容在此"
不会转义,也不用担心双引号
`

分割

strings.Split(字符串, 分割符)  //返回一个列表(数组)
a := `c:\windows\system32\drivers\`
fmt.Println(strings.Split(a, "\\"))   //strings包

包含

strings.Contains(字符串, 子串)   //返回布尔值 
a := `c:\windows\system32\drivers\`
fmt.Println(strings.Contains(a, "\\"))   //strings包

修改

注意

字符串本身是不可变的.也就是你无法在原变量中直接修改字符串的值,包括增加或者得减少.只能重新赋值.

因此,要修改一个字符串,需要先转化为可变的类型:如果

纯英文的,转化为[]byte () byte型切片

中西合壁的,转化为[]rune() rune型切片

改完以后,再重新转回字符串即可

示例如下

s1 := "红萝卜"  
s2 := []rune(s1)  //转换成单个rune字符切片
s2[0] = '白'   //要用字符型的来改.  
fmt.Println(string(s2))  //将切片重新拼接成字符串

遍历

如果是纯英文的,可以用for i 来实现遍历

s1 := "hello world!"
for i:= 0; i<len(s1); i++{
    fmt.Println(string(s1[i]))   //这里要注意下,如果不加string(s1[i]),直接使用s1[i]会使得打印出来的是整型(uint8)
    
}

如果是中西合壁的字符串,如果用上面的方法来实现会出现乱码,这个时候,我们可以用for range

s1 := "Hello world! 你好,世界!"
for _,v := range s1{
    fmt.Println(string(v))   //这里用string(v)的目的同上.同样是为了将一个整型数字转化为字符.
}

go 中,所有 的字符都是整型的方式表示的.因此,要想显示字符,要用string()函数将整型的数值转换成相应的字符.

小作业:

统计一下:"hello world!你好,世界!" 中 中文字的数量

布尔型

只有true/false两种形态.且不是bool型的无法直接转变成bool型,需要自己处理成相应的bool值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,125评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,293评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,054评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,077评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,096评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,062评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,988评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,817评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,266评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,486评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,646评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,375评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,974评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,621评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,642评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,538评论 2 352

推荐阅读更多精彩内容

  • Go基本数据类型 Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函...
    付少_Flj阅读 334评论 0 1
  • go语言中基本数据类型大体可以分为:整型、浮点型、布尔型、字符串。 首先看整型,在go语言中整型的...
    love_a_pig阅读 946评论 0 1
  • nil 是 interface、function、pointer、map、slice 和 channel 类型变量...
    宋song一阅读 4,136评论 0 0
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,520评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,562评论 0 11