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

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

树活一张皮,人活一张脸。文章好不好,标题最重要。光起名就想了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. 组件 layui 常用控件下拉框的应用

    下拉框的显示样式: 针对下拉框的绑定等操作时,在最后务必调用一次 form.render(); 1.基本定义: <div class="layui-form-item"> ...

  2. #tensorflow入门(1)

    tensorflow入门(1) 关于 TensorFlow TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库.节点(Nodes)在图中表示数学操 ...

  3. jsp与servlet联合处理

    通过model1 或者说 model2 我们知道的mvc 的分层思想, 在model1 中jsp 通负责显示,有负责控制逻辑结构, 那么怎么做呢,看下面的请求过程. <?xml version= ...

  4. jdk8 JAVA_OPTS

    JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m -Djava. ...

  5. LINUX 笔记-grep命令

    grep [-acinv] [--color=auto] '查找字符串' filename 它的常用参数如下: -a :将binary文件以text文件的方式查找数据 -c :计算找到'查找字符串'的 ...

  6. SpringMVC Spring MyBatis整合配置文件

    1.spring管理SqlSessionFactory.mapper 1)在classpath下创建mybatis/sqlMapConfig.xml <?xml version="1. ...

  7. LeetCode 461. Hamming Distance (汉明距离)

    The Hamming distance between two integers is the number of positions at which the corresponding bits ...

  8. LeetCode 292. Nim Game (取物游戏)

    You are playing the following Nim Game with your friend: There is a heap of stones on the table, eac ...

  9. Go语言中slice使用注意事项

    Go 语言中的slice类型可以理解为是数组array类型的描述符,包含了三个因素: 指向底层数组的指针 slice目前使用到的底层数组的元素个数,即长度 底层数组的最大长度,即容量 因此当我们定义一 ...

  10. php 不写闭合标签

    参阅了一些文章,对PHP闭合标签的总结如下:       好处:如果这个是一个被别人包含的程序,没有这个结束符,可以减少很多很多问题,比如说:header, setcookie, session_st ...