Go 语言入门
Go 语言入门
Go 语言简介
- Go 使一个开源的编程语言。
- 从2007年末 有Robert Griesemer,Rob Pike , Ken Thompson 主持开发。
- 最终2009年11月开源。
- 2012年早些时候发布了Go1 稳定版本
- 目前Go的开发已经是完全开放的,并且拥有一个活跃的社区。
Go 语言特色
- 简单、快速、安全
- 并行、有趣、开源
- 内存管理、v数组安全、编译迅速
第一个Go程序《Hello world》
// test package main import ( "fmt" ) func main() { fmt.Println("Hello World!") }
这个代码,是有LiteIDE 自动生成的。
运行结果如下:
// test package main import ( "fmt" ) func main() { fmt.Println("Hello World!") }
根据Go Hello World 实力,分析一下GO语言结构
Go语言的基础组成有以下几个部分:
- 包声明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 注释
接下来让我们来看下简单的代码,该代码输出了"Hello World!"
// test package main import ( "fmt" ) func main() { fmt.Println("Hello World!") }
详细分析一下:
1、第一行代码 package main
定了包名, 必须在源文件中非注释的第一行指明这个文件属于哪个包,比如:package main
表示一个可独立执行的程序,每一个Go应用程序,都包含一个 main
的包。
2、下一行的 import "fmt"
高速Go编辑器这个程序要用到fmt 包,fmt包实现了格式化IO的函数。
3、下一行 func main()
是程序开始执行的函数,main函数是每一个可执行程序必须包含的,一般来说,都是在启动第一个执行的函数(如果有init()函数,会更先执行)。
4、fmt.Println(...) 输出字符串到控制台,并在最后自动增加换行符\n
5、注解 /*.... */
。不解释。
使用命令窗,执行Go程序
刚刚的文件保存为 test.go
然后打开命令窗口,运行 go run test.go
回车即可。
Go语言基础语法
** Go 标记 **
Go程序可以有多个标记组成,可以使关键字、标识符、常量、字符串、符号。如下Go语句的6个标记组成。
fmt.Println("Hello,World!")
6个标记是:
1、fmt 2、. 3、Println 4、( 5、"Hello,World!" 6、)
行分隔符
在Go 程序中,一行代表一个语句结束,每个语句不需要像C家族中的其他语言一样以分毫;结尾,因为这些工作都由Go编译器自动完成。
如果你打算多个语句写在同一行,他们则必须使用;人为区分,但在实际开发中,我们并不鼓励这样的做法。
注释
注释不会被编译。
// 我是单行注释 /* 我是多行注释 */
标识符
标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(AZ和az)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。
以下是无效的标识符:
- 1ab(以数字开头)
- case(Go 语言的关键字)
- a+b(运算符是不允许的)
Go 语言数据类型
序号 | 类型 | 描述 |
---|---|---|
1 | 布尔型 | 布尔型的值只可以是常量true或则false.例如:var b = true var b bool = true |
2 | 数字类型 | 整形int和浮点型float , Go语言支持整型和浮点数字,并且原生支持复数,其中位的运输采用补码 |
3 | 字符串类型 | 字符串就是一串固定长度的字符链接起来的字符序列。Go的字符串是由单个字节链接起来的。Go语言的字符串的字节使用UTF-8编码表示Unicode文本。 |
派生类
序号 | 类型 |
---|---|
4 | 指针型(Pointer) |
5 | 数组类型 |
6 | 结构化类型(struct) |
7 | Channel类型 |
8 | 函数类型 |
9 | 切片类型 |
10 | 接口类型(interface) |
11 | Map类型 |
数字类型
Go也有基于架构的类型,例如:int、uint和uintptr
序号 | 类型 | 描述 |
---|---|---|
1 | uint8 | 无符号8位整型(0~255) |
2 | uint16 | 无符号16位整形(0~65535) |
3 | uint32 | 无符号 32 位整型 (0~4294967295) |
4 | uint64 | 无符号 64 位整型 (0~18446744073709551615) |
5 | int8 | 有符号 8 位整型 (-128~127) |
6 | int16 | 有符号 16 位整型 (-32768~32767) |
7 | int32 | 有符号 32 位整型 (-2147483648~2147483647) |
8 | int64 | 有符号 64 位整型 (-9223372036854775808~9223372036854775807) |
浮点型
序号 | 类型 | 描述 |
---|---|---|
1 | float32 | IEEE-754 32位浮点型数 |
2 | float64 | IEEE-754 64位浮点型数 |
3 | complex64 | 32 位实数和虚数 |
4 | complex128 | 64 位实数和虚数 |
其他数字类型
序号 | 类型 | 描述 |
---|---|---|
1 | byte | 类似uint8 |
2 | rune | 类似int32 |
3 | uint | 32或64位 |
4 | int | 与uint一样大小 |
5 | uintptr | 无符号整形,用于存放一个指针 |
go语言变量
变量来源于数学,是计算机语言中能存储计算结果或能表示值抽象概念,变量可以通过变量名访问。
Go语言变量名由字母、数字、下划线组成,其中首歌字幕不能为数字。
声明变量的一般形式是使用var关键字:
var identifier type
变量声明
第一种,指定变量类型,声明后若不赋值,使用默认值。
var v_name v_type v_name = value
第二种,根据值自行判断变量类型
var v_name = value
第三种,省略var,注意 := 左侧的变量不应该是已经经过声明的,否则或导致编译错误。
v_name := value //例如 var a int =10 var b = 10 c :=10
实例如下:
package main var a = "测试字符串" var b string = "aweiblog.top" var c bool //默认false func main(){ println(a,b,c) }
多变量声明
//类型相同多个变量,非全局变量 var vname1,vname2 , vname3 type vname1, vname2 , vname3 = v1,v2,v3 var vname1, vname2,vname3 = v1, v2, v3 //和python很想,不需要显示声明类型,自动推断 vname1, vname2,vname3 := v1,v2,v3 //出现在:=左侧的变量不应该是已经被声明的,否则会导致编译错误。 //这种因式分解关键字的写法一般用语声明全局变量,注意这里是 () , 而不是 {} var ( vname1 v_type1 vname2 v_type2 )
实实例如下:
package main var x,y int var( a int b bool ) var c,d int = 1,2 var e,f = 123, "hello" //这种不带声明格式的职能在函数体中出现 //g,h := 123, "hello" func main(){ g,h:=123, "hello" println(x,y,a,b,c,d,e,f,g,h) }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
深度学习入门笔记系列 ( 一 )
本系列将分为 8 篇 。今天是第一篇 ,工欲善其事必先利其器 ,先简单讲讲当前的主流深度学习框架 TensorFlow 及其安装方法 。 我们知道 ,深度学习研究的热潮持续高涨 ,许多的开源深度学习框架也层出不穷 ,比如 TensorFlow、Caffe、Keras、Theano、Torch7……其中 ,TensorFlow 由强大的谷歌研发 ,应用也十分广泛 ,从 GitHub 上的数据统计可以看出来其有着大一统之势头 。 关于 TensorFlow 的安装 ,我们首先得知道 : Window 、MacOS 、Linux 都已支持 TensorFlow Window用户只能使用python3.5+ ,MacOS,Linux支持python2.7和python3.3+ 有GPU可以安装带GPU版本的,没有GPU就安装CPU版本的。 关于 TensorFlow 的安装 ,这里推荐使用 pip 方式安装 ,简单粗暴 !这里小詹安利一款神器 ,谁用谁说好哈哈 !Anaconda ,你可以试试 ,自带python3.5 ,也包含了很多模块 ,配置其他模块的时候也很好用 。 首先是 window...
- 下一篇
如何降低90%Java垃圾回收时间?以阿里HBase的GC优化实践为例
福利:国际顶级盛会HBaseCon Asia 2018将于8月在北京举行,目前正免费开放申请中,更多详情参考https://yq.aliyun.com/promotion/631 如果你对大数据存储、分布式数据库、HBase等感兴趣,欢迎加入我们,一起做最好的大数据在线存储,职位参考及联系方式:https://maimai.cn/job?webjid=1heZGIyM4&srcu=1aOrffoj1&src=app&fr=my_jobsrecruit_job GC一直是Java应用中讨论的一个热门话题,尤其在像HBase这样的大型在线存储系统中,大堆下(百GB)的GC停顿延迟产生的在线实时影响,成为内核和应用开发者的一大痛点。 过去的一年里,我们准备在Ali-HBase上突破这个被普遍认知的痛点,为此进行了深度分
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程