爱上开源之golang入门至实战-第二章语言基础

 

第二章  语言基础

在上一章中,读者已经了解了如何搭建Golang开发环境及开发环境及程序的开发过程。

从本章开始,我们开始讲解golang语言基础,这些基本语言的语法和其他一些编程语言相比有些是类似的,但还有很多不同之处,不管读者是否以前学习过其他一门的语言,都最好花一定的时间来了解这些golang最基本的语法。

2.1  基础要素

Golang程序代码是由很多字符部分组成,其中任何一个字符部分都有它存在的意义。这些部分就是构成Golang程序代码基础要素。本节就来讲解这些基础要素。

代码样例

package main

import "fmt"



func main() {

//  单行注释

/*  单行注释 */

/**多行注释

*/

fmt.Println("Welcome to golang.")

}

一段完整的GO语言的代码通常情况下由下面几个部分组成

包声明   (***)

引入包

函数

变量

语句 & 表达式

注释

注:(***) 表示必须的基础元素

用上段代码示例,我们一起来看看这段代码里都包含了那些基础元素:

第一行代码 package main   对应的是包申明, 声明当前代码的包名为main, 在前面我们介绍过, 同一个目录级别下包名必须是唯一的。 package main这包申明的语句, 必须是非注释语句的第一个基础元素, 即除了注释, 其他的基础元素必须放在包申明之后;而且包声明元素,有且仅有一次。

小提示:

  1.  每个golang程序代码文件都必须包含包声明基础元素, 并且只出现一次,
  2.  main包是有特殊用途的包名, main包里的main函数是可运行程序的入口函数, 所以对main包的命名一定提前做好规划

第二行代码 import fmt  对应的是包引入语句, 表示当前代码由外引入的标准库包或者其他的第三方库包, 如本例所示, 引入fmt标准库包, 在golang的程序代码里常常会引用多个不同的包, 可以多次出现包引入基础元素; fmt 包实现了格式化 IO(输入/输出)的函数; 我们通常用fmt来进行一些控制端打印的功能

小提示:

  1.  使用import()的方式简化包的引入   例如代码  

import (

     “fmt”

     “net”

  1.  引入时,使用包别名, 别名在每个代码文件里,必须唯一   例如代码

import  ffmt

  1. 用idea进行开发时,会自动对引入包进行优化, 在程序代码中,没有使用到的引入包,在保存代码的时候,会被ide自动的清除掉(go mod的作用),但是我们的程序又必须依赖这个包, 可以通过 名称为“_”的系统别名的方式来进行引入,

import  _fmt

  1. 除了“_”系统别名,还有另一个系统别名“., 表示为当前包, 这样写代码的时候,可以省略掉包名或者别名; 系统别名“_”和 “.” 可以出现多次

import  .fmt

import  .net

  1. 第三行代码  func main(){}    对应的是函数申明; main 函数是每一个可执行程序所必须包含的,package main里的main函数是一个可运行程序的主方法入口,

小提示:

  1.  main 函数是每一个可执行程序所必须包含的, 如果我们只是开发工具包或者封装一些应用类是不需要main函数的。  只有在package main下定义的main函数才有实际的主入口函数的意义, 定义在非main的package下的main函数,不会作为主入口函数执行;
  2. 注意函数定义的花括号, 前花括号必须和前面部分同一行, 在前花括号后进行换行, 这点是golang的语法解析要求的;必须严格遵照,否则代码不能进行编译
  3.  还有另一个有意义的函数,大家也一定要记牢; init不带任何参数的函数  

func init(){

}  

这个函数为初始化函数, 在执行过程中,会提前在main函数执行之前调用;  在后面相关实战章节,我们还会重点的进行介绍

  1. 第四行至第七行   对应的是注释, 作为一个优秀而专业的程序员,在代码的实现过程中一定要必不可少的添加相关的注释

  1. 其他部分; fmt.Println(“Welcome to golang.”)  是语句, 实现在控制台打印Welcome to golang.的功能; 其中fmt为实现了控制台打印的包fmt, Println是在该包里定义的一个函数, 有关语句和变量   我们在后面的章节会进行介绍

小提示:

  1.  引入时用“.”作为别名的包,可以省略包名;

即 如果引入改为   import . fmt

下面的调用 可以直接使用   Println("Welcome to golang."), 而不需要使用“fmt.”的方式

2.2  行分隔符

在golang里, 各种基础元素之间用换行符进行分割, 不需要额外的字符(和java以及其他某些语言的区别,句尾直接换行符,没有其他分隔符,比如java的“;”), 如果一行包含多个语句, 使用;在同一行进行分离

示例:

循环打印一个数组里的数字

func loopExample() {

var arrays []int = []int{1, 2, 3}

for idx, one := range arrays {

fmt.Printf("%d %d\n", idx, one)

}

}

2.3  标识符

标识符是定义的包名函数名或者变量等起的名称,例如我们的样例代码中的loopExample, arrays, fmt,Printl都是标识符,其中loopExample函数名,arrays变量名名,fmt是包名, Println也是函数名,除此之外还可以为类型名,结构体名, 属性名, 接受体名, 泛型名等。

golang中规定标识符由大小写字母(A~Z和a~z)、数字(0~9)、下划线(_)组成,但是不能以数字开头。例如 WelcomeGoWelcome_Go_WelcomeGo都是合法的标识符。但是如下几种就不是合法的标识符。

123_WelcomeGo(标识符以数字开头)

Welcome Go(标识符中包含了空格)

golang中标识符是严格区分大小写的,WelcomeGoWelcomego是完全不同的标识符。

小提示:

  1.  引入包中的函数或者变量名, 以大写字母开头的,才对其他包可见,否则不可见, 在golang里,称为exportable,

2.4  关键字(保留字)

关键字也称之为保留字;保留字更能体现出其的含义。 被golang系统保留的具有特殊用途或者含义的标识符;读者最好深刻记忆这些关键字并对这些关键字的用途要熟练的进行掌握。

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    

Append cap close copy false   

Imag iota len make new   

nil panic println recover True   

除了以上作为保留的关键字以外, 一下还有golang里系统已经定义的数据类型和内置方法,也作为保留字标识符

bool byte complex complex64 complex128 uint16 float32

float64 int int8 int16 uint32 int32 int64

uint64 real string uint uint8 uintptr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值