专栏首页23号杂货铺Go学习之懒人速成 - 基础篇(二)

Go学习之懒人速成 - 基础篇(二)

在上一篇《入门篇》,已经提高了Go的安装和使用,接下来我们一起学习一下Golang的基础语法

为响应一起交流的朋友们的吐槽,后续文章将陆续加上目录结构,方便大家阅读(主要还是懒,O(∩_∩)O) orz......

- api文档

- 包 - package

- main方法

- 变量

- 常量

- iota关键字

- 数组

- fmt是什么鬼

首先,先提供给大家一个api官网,开发者必备手册,地址:https://golang.org/cmd/api/

当然,可能有的朋友没有VPN,连接不上官网,有一个本地查看文档的方式,如下:

或者使用http,浏览器方式查看

1、什么是包(package)?

我们在使用其它语言的情况,比如Java(本主是Java开发出身,0rz,以此为例),是有“包”这个概念的,其实,就可以简单的理解为是便于管理和组织所有的文件所使用的,比如java中常用的类String,它就隶属于“java.lang”包下的类。(当然,新手不理解也没有关系)。在Go当中,也是类似的概念,它将我们的go文件(文件的后缀名为“.go”)组织起来,可以方便进行归类、复用等。

你会看到这样的一些文件结构,比如encoding包,下面就有base32、base64、hex、json等等,当需要使用时,则

在开篇《入门篇》中,所讲到的编写“hello world”使用了“fmt”,就使用这样的导入方式,当需要导入多个包时,可以使用

包的命名

go语言的包的命名,遵循简洁、小写、和go文件所在目录同名的原则,这样就便于我们引用,书写以及快速定位查找。对于在企业当中开发的程序而言,我们一般采用域名作为顶级包名的方式,这样就不用担心和其他开发者包名重复的问题了,比如公司的域名是`www.bboyHan.com`,那么开发的go程序都以`bboyHan.com`作为全路径中的最顶层部分,导入开发的工具包则可以写为:

2、Main

我们知道,在java当中,有一个主程序的入口main()方法,而Go语言程序,也是类似。当把一个go文件的包名声明为main时,就等于告诉go编译程序,这是一个可执行程序,那么go编译程序就会尝试把它编译为一个二进制的可执行文件。如果没有这个函数,程序就无法执行。

那么,思考一个问题:Go编译器又是如何去寻找各个文件、包之间的依赖关系而构建程序的呢?

在上一文当中,我们提到了环境变量GOROOT和GOPATH两个概念,这是两个定义路径的环境变量,GOROOT是安装Go的路径,比如 C:\go ;GOPATH是我们自己定义的开发者个人的工作空间,比如C:\workspace\src\bbboyHan。

编译器会使用我们设置的这两个路径,再加上import导入的相对全路径来查找磁盘上的包,比如我们导入的fmt包,编译器最终找到的是 C:\go\fmt 这个位置。对于包的查找,是有优先级的,编译器会优先在GOROOT里搜索,其次是GOPATH,一旦找到,就会马上停止搜索。如果最终都没找到,就会报编译异常了。

3、变量

Go中使用全新的关键字var来声明变量。var我们并不陌生,在Javascript 和C#中均有出现。不同的是Go和C#中变量属于强类型,在声明变量后就不允许改变其数据类型。记住,Go属于强数据类型

声明及初始化

值得注意的一点,赋值时如果要确定你想要的类型,在Go中是不支持隐式转换的。如果是定义个float64类型的变量,请写为

4、常量

使用constant关键字进行定义,官方文档内容

有趣的一点,就是Go在一些情况下,会做一些调整,比如:

也就是说,Go在不损失精度的情况下会把3.0这类浮点数视作整数3,如果类型显式指定了,在表达式当中就不会产生变化。在使用的时候会根据上下文需要的类型转化为实际类型,比如uint8(0) + 1.0就是uint8(1),但是uint8(0)+2.2就会由于2.2无法转化为uint8而报错。

当多个常量需要定义时,也可以使用简易写法:

5、iota

iota,特殊常量,可以认为是一个可以被编译器修改的常量。在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

6、数组

因为数组的创建在内存当中是一段连续的空间,所以通过索引进行直接访问,访问的效率非常高

看了上面的代码,想必会有朋友会问“fmt”还没有讲呢,下面讲解一下fmt包的相关知识

7、“fmt”

fmt包实现了格式化的I/O函数,这点类似C语言中的printf和scanf,但是更加简单,其中的格式“占位符”衍生自 C

占位符

一般占位符

符号

说明

%v

相应值的默认格式

%+v

在打印结构体时,默认格式,会添加字段名

%#v

相应值的 Go 语法表示

%T

相应值的类型的 Go 语法表示

%%

字面上的百分号,并非值的占位符

布尔占位符

符号

说明

%t

单词 true 或 false

整数占位符

符号

说明

%b

二进制表示

%c

相应 Unicode 码点所表示的字符

%d

十进制表示

%o

八进制表示

%q

单引号围绕的字符字面值,由 Go 语法安全地转义

%x

十六进制表示,字母形式为小写 a-f

%X

十六进制表示,字母形式为大写 A-F

%U

Unicode 格式:U+1234,等同于 "U+%04X"

浮点数及其复合构成占位符

符号

说明

%b

无小数部分的,指数为二的幂的科学计数法,与 strconv.FormatFloat 的 'b' 转换格式一致。例如 -123456p-78

%e

科学计数法,例如 -1234.456e+78

%E

科学计数法,例如 -1234.456E+78

%f

有小数点而无指数,例如 123.456

%g

根据情况选择 %e 或 %f 以产生更紧凑的(无末尾的 0)输出

%G

根据情况选择 %E 或 %f 以产生更紧凑的(无末尾的 0)输出

字符串与字节切片占位符

符号

说明

%s

字符串或切片的无解译字节

%q

双引号围绕的字符串,由 Go 语法安全地转义

%x

十六进制,小写字母,每字节两个字符

%X

十六进制,大写字母,每字节两个字符

指针

符号

说明

%p

十六进制表示,前缀 0x

fmt中的方法:

其它关于fmt的内容未进行详细解释的,可以参考官方文档进行进一步研究学习

本公众号致力于做一个

非营利性质

的技术资源共享交流平台

有任何建议或问题,欢迎点击上方蓝色字体关注小编公众号或直接加小编微信交流,期待喜欢IT,从事IT的行业大牛一起学习交流。

本文分享自微信公众号 - 23号杂货铺(sharontang0323)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • lower_bound 和 upper_bound 功能和用法

    以前用这两个函数的时候,简单看了几句别人的博客,记住了大概,用的时候每用一次就弄混一次,相当难受,今天对照着这两个函数的源码和自己的尝试发现:其实这两个函数只能...

    _DIY
  • 手把手的教你激活PyCharm --Pycharm激活详细教程(二)(非常详细,非常实用)

    第一步:点击‘Activation code’,授权激活pycharm,如下图所示:

    北京-宏哥
  • Netty实现高性能IOT服务器(Groza)之精尽代码篇中

    近年来,物联网高歌猛进,美国有“工业互联网”,德国有“工业4.0”,我国也有“中国制造2025”,这背后都是云计算、大数据。据波士顿咨询报告,单单中国制造业,云...

    sanshengshui
  • 蚂蚁通讯框架SOFABolt之私有通讯协议设计

    SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。

    sanshengshui
  • STL详细介绍(更新中~~~)

    帮助链接:https://www.jianshu.com/p/497843e403b4

    _DIY
  • java字节和字符的区别

    Java采用unicode来表示字符,java中的一个char是2个字节,一个中文或英文字符的unicode编码都占2个字节,但如果采用其他编码方式,一个字符占...

    用代码征服天下
  • hadoop2.x源码编译

    转载请标明出处: http://blog.csdn.net/zwto1/article/details/50733753;

    chaplinthink
  • java——面向对象

    测试1和测试2编译时类型和运行时类型相同,所以没有多态发生,测试3编译时类型是BaseClass,而运行时类型是SubClass,所以当执行bs.base()时...

    用代码征服天下
  • 你会使用try-with-resources吗

    比如 InputStream、OutputStream,数据库连接对象 Connection,MyBatis中的 SqlSession 会话等。作为开发人员经常...

    cxuan
  • Pycharm使用教程(三)(非常详细,非常实用)

    1、 汉化:把resources_zh.jar拷贝到PyCharm的安装目录下的lib目录,重启Pycharm即可。

    北京-宏哥

扫码关注云+社区

领取腾讯云代金券