关于Golang的那些事(三) -- 基本数据类型

        说完了变量与声明,接下来要讲讲Golang里面的数据类型,Golang里面的数据类型分成基础类型、聚合类型、引用类型和接口类型。基础类型包括数字、字符串和布尔型;聚合类型包含数组和结构体,它是通过组合各种简单类型而得到的更复杂的数据类型;引用类型包含指针、slice、map、函数以及通道;接口类型将会在后面的篇章进行讲解。学到C语言的人都知道,在计算机的世界里,分为整数、浮点数和复数,在Go里面也一样,分为整数、浮点数和复数。

       对于整数来说有两种类型:有符号整数和无符号整数,有符号整数有8位、16位、32位、64位的,用int8、int16、int32、int64表示,无符号整数有对应的uint8、uint16、uint32、uint64表示。此外还有int和uint,目前来说int是使用较为广泛的数值类型。值得注意的是,对于二元运算符,其操作数的类型必须相同,int32和int16也不能相加,比如var a int32 = 1; var b int16 = 3; 那么a+b编译就会报错,因为int32和int16类型不匹配,想要相加就要转化为同一类型的数据,比如var sum = int(a) + int(b)。

       对于浮点数来说就没有直接float的类型,对于它来说只有两种:float32和float64,float32的最大值大约是3.4e38(也就是3.4*10^38),而float64的最大值为1.8e308(也就是1.8*10^308),其算数特性遵从IEEE 754标准(参考:https://zh.wikipedia.org/wiki/IEEE_754,需要梯子)。

       对于复数,Golang里面分为complex64和complex128,内置的real函数和imag函数则分别用作提取复数的实部和虚部,比如var x complex128 = complex(1,2)表示1+2i,var y complex128 = complex(3,4),fmt.Printon(x*y)的值就是-5+10i,fmt.Println(real(x*y))就是-5,fmt.Println(imag(x*y))就是10。

       对于布尔值,Golang的布尔值和Node.js或者C的布尔值没有什么差别,只有两个值true和false,布尔值无法隐式转化为数值,数值也不能隐式转化为布尔值,需要通过函数进行转换。

      对于字符串类型,Golang就自带这种类型的数据,提供的一些方法也很实用,而且它直接支持utf-8的编码,使用起来更加方便,比如声明一个字符串s:="hello, world",想取长度就可以调用len方法,比如len(s),想获取子串,就直接在字符串变量后面写[i, j],i代表起始的下标,j代表结束的下标。有个地方需要留意,当两个字符串拼到一起,做加法运算的时候,得到的新字符串和原来的两个字符串公用一段底层的内存,没有重新分配新的内存,这样使得复制任何长度字符串的开销都低廉。比如str1 := "hello"; str2 : "world"; str3 += str2; 最终拼凑出来的是helloworld,但是它的起始地址和str1的起始地址一致。

        说完了数据类型,那二元操作符的优先级是怎么样的?先乘除后加减,这句古话是我们平时学数学的时候背过的一句话,在计算机的世界里我们同样遵循一样的规律,除了加减乘除,我们还有很多很多的二元运算符,具体的优先级排序如下:

+   /   %  《    》   &    &^

+    -    |    ^

==     !=    <      <=     >     >=

       二元运算符分为五大优先级,同级别的运算符满足左结合规律,算术运算符+、-、*、/可应用于整数、浮点数和复数,而取模运算符%仅可用于整数,取模余数的正负号总是和被除数一致,所以-5%3和-5%-3都是等于-2,除法运算(/)的行为取决于操作数是否都为整数,整数相除,商会舍弃小数部分,比如。5.0/4.0=1.25,而5/4等于1。有了上面的这些基本数据类型及其相关的运算,我相信已经在平时的生活和工作当中够用的了,有些内容和Node.js相差还是蛮大的,需要多多练习,尽快熟悉这部分的内容。

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