百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

golang入坑系列 - 那些说不清道不明的数据类型

toyiye 2024-05-19 19:35 13 浏览 0 评论

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

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

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

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

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

自打有编程语言开始,基本类型就四类:布尔,字符/字符串,数值和其它。

不同的语言,对类型有不同的分类标准,就会衍生出更为细致的分类,但本质就这么几类。其它语言,咱先不管。先来看看Golang的类型划分:

  • 布尔类型


True or False


只有两个值,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。

因此才会说字符串是不可更改的。(因为从来都是给它赋新值,旧值直接被垃圾回收了) 这段记住即可,除了面试,其它没有会被提到的场合(较真除外)。

  • 数值类型


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

整型值

序号类型和取值范围:

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

浮点数

符号类型和取值范围

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


上面列出了Golang当中所有的数值类型,大部分而且是绝大部分是不常用到的。

经常用的就是int, byte再加上float32/64,没有其它。

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

i := 0

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

刚开始写golang,别被老司机带坏了。老老实实的声明变量类型,等你变老了,再去调戏小姑娘

var i int
i = 0

没有人会问到常量么? 在有的文章或者教程中,常量也被归纳到类型中。Golang官方里面没有这么提,所以尊重原创,我也不认为常量算是一种类型。

变量

类型是为变量服务的,类型是衣,变量是皮。前面你所写的golang代码中已经有变量了,可知其有而不知它为啥有,看下面就让你知道变量是怎么回事。

说的官方点,变量只不过是给程序可以操作的存储区域的名称而已。Go中的每个变量都有一个特定类型,该类型决定变量内存的大小和布局,和可以存储在该内存中的值的范围,以及可以应用于该变量的操作集。

这种话,说出来都绕口。 通俗大白话,变量就是一种保存在内存里的数据结构

变量名只能用字母,数字或者下划线来组成。但必须以字母或者下划线开头,别找事,用数字开头。那就是自己挖坑自己遭殃。自己作孽自己die。

Golang对大小写敏感,所以首字母是否要大写,根据是否可见来判断。 如果不保准,就小写。等着后悔了,改成大写也来得及。

Golang也允许定义各种其他类型的变量,例如枚举、指针、数组、结构和Union,为了体现本书内容的厚度,我们放在以后的章节中讨论这些变量。在本章中,将只关注基本的变量类型。

声明变量的基本格式是:

var 变量名称 变量类型

也可以采用:

变量名称 := 初始值

但还是那句话,没练成老司机,就别调戏小姑娘。老老实实的用第一种吧。如果某天看到下面的声明方式也别奇怪:

var  i, j, k int

Golang支持同时声明多个变量。 上面就声明了三个i、j和k三个int类型的变量。一般来说,声明完之后,就择机进行初始化。

i = 4
j,k = 5,6

可以单独给某个变量赋值,也可以同时给多个变量赋值。 喜欢哪个就用哪个,高兴就好。

像这种通过var来声明的变量,称之为静态变量。 也就是编译器在编译阶段就可以知道数据类型的变量。 反之就是动态变量,也就是通过 i := 0这种,运行时才能推导出变量类型。 不用担心两者在效率上会差多少。 现在的CPU老niu X了,不在乎这点差距。

介绍完常规命名方式,下面来介绍个"孔乙己"式的方式:

var a, b, c = 3, 4, "foo"

花哨不实用,知道即可。非要练,请自便~ 小心被团队里的其它人打折腿。

Golang的变量还是很简单的,实用的就那么几招,学会了就真的学会了,没有花架子。

本节起名是准备冲锋。冲锋之前,送你一把称心称手的兵器。

下面介绍两个IDE

IDE

Goland

IDE大厂JetBrains推出的专业Golang IDE。 现在还会推出30天不要钱的预览版。 趁着免费赶紧用吧。

安装好Goland之后,基本上什么都不需要配置,开箱既用。唯独需要你自己维护一下GOPATH(如果是go 1.13以上就不用了)。 不知道何为GOPATH? 老铁,上点心,别吃完饭就忘... 翻到前面几节复习一下。

Goland的GOPATH设置在Preferences --> Go --> GOPATH. 里面有全局GOPATH也有项目GOPATH,根据自己的需要,自己维护一下。如果心情好,可以顺手去维护了GOROOT。反正是no zuo no die。 工程跑不起来,还是自己受伤。

所以只维护GOPATH就好。

VScode

宇宙第一IDE,通过插件可以支持几乎市面上所有的开发语言,Golang自然不在话下。 打开VSCode,在插件市场中直接搜golang,安装下载量最高的插件,重启IDE就可以用了。

说的这么简单,好像就真这么简单一样。

(这里有一段不能说的话.....)


第一式,亢龙有悔就结束了。 入门没入门? 没入门...


再从第一节读一遍,保证入门。

入了门? 看看有没有点关注呀,没点赶紧点一个。每节最后我都提示一下,反正是为了凑字数..

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码