Go语言学习二 语言结构 基础语法 数据类型
Go 语言结构
Go 语言结构
在我们开始学习 GO 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。
Go Hello World 实例
Go 语言的基础组成有以下几个部分:
- 包声明
- 引入包
- 函数
- 变量
- 语句 & 表达式
- 注释
接下来让我们来看下简单的代码,该代码输出了"Hello World!":
package mainimport "fmt"func main() {/* 这是我的第一个简单的程序 */fmt.Println("Hello, World!") }
让我们来看下以上程序的各个部分:
第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。
下一行 /*...*/ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
下一行 fmt.Println(...) 可以将字符串输出到控制台,并在最后自动增加换行字符 \n。
使用 fmt.Print("hello, world\n") 可以得到相同的结果。
Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 private )。
执行 Go 程序
让我们来看下如何编写 Go 代码并执行它。步骤如下:
打开编辑器如Sublime2,将以上代码添加到编辑器中。
将以上代码保存为 hello.go
打开命令行,并进入程序文件保存的目录中。
输入命令 go run hello.go 并按回车执行代码。
如果操作正确你将在屏幕上看到 "Hello World!" 字样的输出。
$ go run hello.go Hello, World!
Go 语言基础语法
Go 语言基础语法
上一章节我们已经了解了 Go 语言的基本组成结构,本章节我们将学习 Go 语言的基础语法。
Go 标记
Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:
fmt.Println("Hello, World!")
6 个标记是(每行一个):
1. fmt 2. . 3. Println 4. ( 5. "Hello, World!" 6. )
行分隔符
在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。
以下为两个语句:
fmt.Println("Hello, World!") fmt.Println("w3cschoolW3Cschool教程:w3cschool.cn")
注释
注释不会被编译,每一个包应该有相关注释。
单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 /* 开头,并以 */ 结尾。如:
// 单行注释 /*Author by w3cschoolW3Cschool教程我是多行注释*/
标识符
标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母huo下划线而不能是数字。
以下是有效的标识符:
mahesh kumar abc move_name a_123 myname50 _temp j a23b9 retVal
以下是无效的标识符:
- 1ab(以数字开头)
- case(Go 语言的关键字)
- a+b(运算符是不允许的)
关键字
下面列举了 Go 代码中会使用到的 25 个关键字或保留字:
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符:
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
println | real | recover | string | true | uint | uint8 | uintptr |
程序一般由关键字、常量、变量、运算符、类型和函数组成。
程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}。
程序中可能会使用到这些标点符号:.、,、;、: 和 …。
Go 语言的空格
Go 语言中变量的声明必须使用空格隔开,如:
var age int;
语句中适当使用空格能让程序看易阅读。
无空格:
fruit=apples+oranges;
在变量与运算符间加入空格,程序看起来更加美观,如:
fruit = apples + oranges;
Go 语言数据类型
Go 语言数据类型
在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
Go 语言按类别有以下几种数据类型:
序号 | 类型和描述 |
---|---|
1 |
布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 |
2 |
数字类型 整型 int 和浮点型 float,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。 |
3 |
字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。 |
4 |
派生类型: 包括:
|
数字类型
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语言学习二 语言结构 基础语法 数据类型相关推荐
- 前端学习笔记之CSS3基础语法与盒模型(二)
前端学习笔记之 CSS3基础语法与盒模型 CSS3简介 CSS(cascading style sheet,层叠式样式表)是用来给HTML标签添加样式的语言 CSS3是CSS的最新版本,增加了大量的样 ...
- c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体
枚举 枚举是一种用户定义的数据类型,它用关键字enum以如下语法格式来声明: enum 枚举类型名字 {名字0,名字1,...,名字n}: 枚举类型名字通常并不真的使用,要用的是大括号里面的名字,因为 ...
- Ruby语言学习系列--基本的ruby语法
Ruby语言学习系列--基本的ruby语法 1. 基本的ruby语法 1.1 变量.常量和类型 1) 定义变量 变量类型 描述 示例 局部变量(或伪变量) 以小写字母或下划 ...
- Swift语言指南(二)--语言基础之注释和分号
Swift语言指南(二)--语言基础之注释和分号 原文:Swift语言指南(二)--语言基础之注释和分号 注释 通过注释向自己的代码中注入不可执行的文本,作为你自己的笔记或提示.Swift编译器运行时 ...
- c语言学习笔记【结构体02】结构体指针变量与结构体变量的函数参数,C语言学习笔记结构体02结构体指针变量与结构体变量的函数参数.docx...
C 语言学习笔记[结构体02]结构体指针变量与结构体变量 的函数参数 C 语言学习笔记之结构体指针变量一提指针,那可 是 C 语言的核心了,有多少学子曾拜倒在指针的脚下.单纯的说指针,其实并不难,但是 ...
- python导入模块的语法结构_python学习第五讲,python基础语法之函数语法,与Import导入模块....
python学习第五讲,python基础语法之函数语法,与Import导入模块. 一丶函数简介 函数,就是一个代码块,这个代码块是别人写好的.我们调用就可以. 函数也可以称为方法. 1.函数语法定义 ...
- java学习总结——通过题来学习Java(Java基础语法)
java学习总结--通过题来学习Java(Java基础语法篇之一) 一.概述 大二痛苦的前十个周后,我终于得到了喘息之机,有时间来回顾一下之前所学到的东西,总结一下之前的所得,尝试获取一下新的东西,同 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- 大数据HiveSQL学习笔记三-查询基础语法以及常用函数
大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...
最新文章
- 做acm 需要学的算法
- 服务端php的更新手游客户端,PHP服务器安卓app下载|PHP服务器下载1.11.3 官方移动客户端-PHP服务器官方移动客户端1.11.3-蜻蜓手游网...
- IoT	、5G与边缘计算将会擦出怎样的火花?
- Ubuntu apt安装/卸载软件和设置软件源
- skywalking链路追踪在微服务架构中的使用
- css不换行属性_前端 | css display:flex 的六个属性你知道吗
- 关于Android studio 3.0 Failure [INSTALL_FAILED_TEST_ONLY]安装失败的问题
- Coursera自动驾驶课程第17讲:An Autonomous Vehicle State Estimator
- android 存储不被垃圾清理,手机内存足够大,就不需要清理垃圾了?你错了!
- 如何在Ubuntu 16.04中创建GIF动图
- myeclipse 打包Jar
- ExtJS应用架构设计(二)
- 高级商务办公软件应用【1】
- html微信投票代码,关于网络投票刷票神器的代码编写
- 星空特效HTML代码,HTML5特效库 HTML5+JS全屏星空特效源码
- windows系统统不支持mysql_Windows系统下MySQL无法启动的万能解决方法
- 谷粒商城九商品服务之商品属性及仓储服务todo
- 浅谈因子分析(Factor Analysis)
- CentOS 7 关闭 swap 分区
- 超详细图文保姆级教程:App开发新手入门(六)