史前摘要: 本来想写读前必读,但连续几篇博文都写读前必读,感觉就没有了新意。 所以换成史前摘要,反正是一个意思。 此摘要的目的仍然是提醒点击而来的同学,本系列最新文章在这里。放到博客园的目的是为了方便不能翻墙的同学查看。 有人说写的太肤浅没意思,我的回答是,饭有粗茶咸淡,味有酸甜苦辣,萝卜青菜各有所爱。没辙,本人也就这点能耐了,耐看您就多看点,不耐看,呵呵,那我也改不了啦。

好,史前的话说完了,下面开始史后的话。

树活一张皮,人活一张脸。文章好不好,标题最重要。光起名就想了10几分钟,中国汉语博大精深,但适合做技术类标题的真心太难想了。标题不够,写诗来凑,所以来段绕口小段子算是开场:

守法朝朝忧闷,强盗夜夜欢歌。 损人利己骑马骡,正直公平却挨饿。 修桥补路瞎眼人,杀人放火事儿真多。我到西天问我佛,佛说:我TM也没辙。

看完,乐完。收拾心情,开始继续学Golang。

在上一节,你学会了写第一个Golang程序,也知道了Golang的程序结构。我不知道你是什么技术背景,也不知道有多少编码功底。所以有的地方写的比较啰嗦,懂了,就一笑而过。不懂,就好好看一下。知识多了,不丢人。不懂装懂,最可怕。

这一节,你将接触到Golang的基本数据类型。

自打有编程语言开始,基本类型就三类:布尔,字符/字符串,数值(和其它)。不同的语言,对类型有不同的分类标准,就会衍生出更为细致的分类,但本质就这么三类。其它语言,咱先不管。先来看看Golang的类型划分:

  • 布尔类型

只有两个值,true或者false。记住只有这两个值。别的语言可以通过0或者1来充当布尔判断,但在golang里面不行(笔杆子出真理,不行就自己写个代码来验证一下)。golang只认true or false。

  • 字符/字符串

字符多了就是字符串。 从内存上来说,字符串就是内存中连续排列的字符的集合。在内存当中保存的都是01这样的二进制,不会保留一个汉字或者字母。所以每个字符都对应着一个数字,这个数字就是ASCII码里面的值。比如十进制的33就是'!'。虽然字符对应的是数字,但Golang仍然赋予字符一个特定的类型叫做byte。你可以这么定义一个字符:

var c byte
c = 33

字符多了就是串,所以字符串类型string也可以理解成是[]byte(byte数组)。提醒一点,Golang的字符串是不可更改的。 记住即可,日常中不会体会到,除非装X较真的时候(比如面试)会提到。这里的不可更改指的是下面的场景:

str := "Who said string cannot change?"
str = "I don't konw"

str仍然是哪个str,但str指向的内存地址已经变了。str只是一个名字,一个代号而已,拿掉这个代号,str又是什么东西(写这段的时候,刚好旁边在放武林外传吕秀才口擒姬无命那段,所以直接用了,应该没有版权问题)? 上面说到字符串是内存中连续的字符集合,所以当你对字符串修改时,其实是将一段新的内存给了str。因此才会说字符串是不可更改的。因为从来都是给它赋新值,旧值直接被垃圾回收了。 这段记住即可,除了面试,其它没有会被提到的场合。

  • 数值类型

这个类型需要好好说一下了,因为衍生的类型太多了。但多归多,真正使用的就那么几个(谁用谁知道)。

整型值
序号 类型和取值范围
1 uint8 无符号8位整型 (0 to 255)
2 uint16 无符号16位整型 (0 to 65535)
3 uint32 无符号32位整型 (0 to 4294967295)
4 uint64 无符号64位整型 (0 to 18446744073709551615)
5 int8 有符号8位整型 (-128 to 127)
6 int16 有符号16位整型 (-32768 to 32767)
7 int32 有符号32位整型 (-2147483648 to 2147483647)
8 int64 有符号64位整型 (-9223372036854775808 to 9223372036854775807)

一句话点明:无符号整型只能表示正数,有符号的可以表示负数。但数的个数是相同的(自己找个笔头,算算二进制就知道了)

浮点数
符号 类型和取值范围
1 **float32 **32位浮点数
2 **float64 **64位浮点数
3 **complex64 **实部虚部都是一个float32的复数
4 **complex128 **实部虚部都是一个float64的复数

Golang里面没有float类型,所以需要浮点数的时候需要指明长度。 除了计算和钱有关的程序(计算利息,收益等等),基本上很少会用到浮点数。

其它数值类型
序号 类型
1 byte等同于uint8
2 rune等同于 int32
3 **uint **等同于 32 or 64 bits
4 **int **等同于 uint
5 uintpt 指针类型 CGO里面经常用到

上面列出了Golang当中所有的数值类型,大部分而且是绝大部分是不常用到的。经常用的就是int, byte再加上float32/64,没有其它。

甚至有的时候,你都不知道用的是什么类型,例如:

i := 0

很可能你就直接声明了一个变量。这个变量什么类型, who care? 不能说你错,因为我也经常这么干。但我知道i 是int型

准备冲锋 golang入坑系列的更多相关文章

  1. 入坑第二式 golang入坑系列

    史前必读: 这是入坑系列的第二式,如果错过了第一式,可以去gitbook( https://andy-zhangtao.gitbooks.io/golang/content/ )点个回放,看个重播.因 ...

  2. 初生牛犊不怕虎 golang入坑系列

    读前必读,下面所有内容都是来自这里. 放到这里的目的,就是为了比对一下,哪里的读者多.平心而论,同样的Markdown,博客园排版真心X看,怎么瞅怎么X看.(X := '难' || X :='耐' | ...

  3. 维多利亚的秘密 golang入坑系列

    原文在gitbook,字字原创,版权没有,转载随意. 在写本文的前一天,2017维密在上海开始了. 为了纪念屌丝界的盛世,特为本节起名维多利亚的秘密.现在的社会,要想出名只有抓眼球.所以写份技术文章, ...

  4. 分水岭 golang入坑系列

    第三式开篇语有些负面, 所以这里就不贴了.有兴趣的自己可以去看看 https://andy-zhangtao.gitbooks.io/golang/content/ .怒发冲冠,意气之作.看完就完了, ...

  5. 坐忘峰 golang入坑系列

    读前必读: 本文写于20日,首发于gitbook. 迟到的是日期,没变的是内容. 点击进入 https://andy-zhangtao.gitbooks.io/golang/content/ 可以看到 ...

  6. 撸起袖子加油干 golang入坑系列

    还是提醒一下,里面有段子,不都是技术. 冲着技术来的,慢走不送.没有版权,但可以给我发邮件(ztao8607@gmail.com) 在我的发小朋友中,终于最后一位打光棍的要结婚了. 说实话,真心不容易 ...

  7. 崩溃 golang入坑系列

    早上(11.30)收到邮件,Vultr东京机房网络故障.当时搭建SS时,考虑到了机房故障.所以特意分出了日本和香港两条线路.但千算万算,忘记数据库还在东京机房中. 现在网络故障,SS服务器无法读取数据 ...

  8. 乐呵乐呵得了 golang入坑系列

    开场就有料,今天返回去看了看以前的文章,轻松指数有点下降趋势.一琢磨,这不是我的风格呀.一反思,合着是这段时间,脑子里杂七杂八的杂事有点多,事情一多,就忘了快乐.古话说得好:愁也一天,乐也一天,只要还 ...

  9. 来自朝鲜的问候 golang入坑系列

    鸿渐于陆 本想着写满十八式,但按照目前的进度来看,是很难凑够十八式了.所以还是那句话,量力而行,适可而止.能写多少就写多少,我没法保证看完这本golang脱口秀,一定能成为golang大拿.但入了门, ...

随机推荐

  1. hdu5696 区间的价值

    区间的价值 我们定义"区间的价值"为一段区间的最大值*最小值. 一个区间左端点在L,右端点在R,那么该区间的长度为(R-L+1). 现在聪明的杰西想要知道,对于长度为k的区间,最大 ...

  2. Windows环境部署并调试pyspark(一)

    准备: windows环境说明:Python2.7 + pipspark版本:spark-1.6.1-bin-hadoop2.6 step1: 下载并解压tar包到自定义的路径.(下载链接 https ...

  3. UEFI启动视频详解:启动分析+N项操作实例

    ============================================================= ※※※※最给力的视频解说※※※※ 2011hiboy全部共享资料:立刻去   ...

  4. asp.net C# 实现微信接口权限开发类

    当前微信接口类已实现以下接口,代码上如果不够简洁的,请自行处理. 1.获取access_token 2.获取用户基本信息 3.生成带参数二维码 4.新增永久素材 5.新增临时素材 6.发送微信模版 7 ...

  5. 使用Java 8中的Stream

    Stream是Java 8 提供的高效操作集合类(Collection)数据的API. 1. 从Iterator到Stream 有一个字符串的list,要统计其中长度大于7的字符串的数量,用迭代来实现 ...

  6. ASP.NET没有魔法——ASP.NET 身份验证与Identity

    前面的文章中为My Blog加入了文章的管理功能(ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块),但是管理功能应该只能由“作者”来访问,那么要如何控制用户的访问权限?也 ...

  7. centos 安装giblab

    本文章转载自:http://www.cnblogs.com/fanjingfeng/p/6665597.html 一, 服务器快速搭建gitlab方法 可以参考gitlab中文社区 的教程 cento ...

  8. sql语句如何查询一个表中某两个字段的相同数据?

    Select Name,ID From A group by Name,ID having count (*)>1

  9. 磨刀不误砍柴工!vs2010快捷键大全

    最常用的快捷键: VS2012变化的快捷键: 注释::VS2010是(Ctrl+E,C),VS2012是(Ctrl+K, Ctrl+C),实际操作,按住Ctrl键不放,先按K键,再按C键.相当于Ctr ...

  10. 前后端分离跨服务器文件上传-Java SpringMVC版

    近来工作上不上特别忙,加上对后台java了解一点,所以就抽时间,写了一个java版本的前后端分离的跨服务器文件上传功能,包括前后端代码. 一.Tomcat服务器部分 1.Tomcat服务器 单独复制一 ...