go语言的学习-----基本结构和类型

go语言的基本结构和类型

文件名与关键字

  • 有效的标识符必须以字符(可以使用任何 UTF-8 编码的字符或 _)开头,然后紧跟着 0 个或多个字符或 Unicode 数字
  • _ 被称为空白标识符。他可以用于变量的声明和赋值(任何数据类型都可以赋值给他),但是赋值之后将会被丢掉,无法在后续代码中使用,而且也不可以使用这个标识符进行赋值和运算
  • 程序的代码通过语句来实现结构化。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。

包与导入

  • package main 表示一个可以独立执行的程序,每个go程序都包含一个名为main的包
  • 所有的报名都必须使用小写字母
  • 属于同一个包的文件必须全部被一起编译
  • 如果import 包名不是由.或者/开头的,则go会在全局文件中进行查找。./会在相对路径中查找,/会在绝对路径中查找
  • 导入包相当于包含了这个包的所有的代码对象
  • import fm "fmt" 根据自己的喜好给包起别名
  • 如果你导入了一个包但是并没有使用,将会报错
导入的可见性规则
  • 当标识符<常量,变量,函数名,结构字段等等>以一个大写字母开头,这个标识符的对象可以被外包使用
  • 当标识符<常量,变量,函数名,结构字段等等>以一个小写字母开头,这个标识符的对象对包外不可见,但在包内是可见并可用的
  • 包可以用作命名空间使用,避免命名冲突
程序的基本结构
  • 函数体使用{}包裹起来,左大括号{必须与函数的声明放在同一行。强制规定,否则报错
  • 函数体的}右大括号需要紧紧的跟着函数体的下一行
    - 原因:因为go看似不需要; 其实这一过程是由编译器完成,如果不紧跟{ 编译器会默认加上;导致出错

类型

  • 基本数据类型:int,float,bool,string
  • 结构化:struct,array,slice,map,channel
  • 描述类型的行为:interface
  • 结构化的类型没有真正的值,使用nil作为默认值
  • go语言中不存在类型继承
    当参数返回个数为一个时,直接写类型,当参数返回个数为多个时,写为(a1 type1,a2 type2)
// 一个返回值
func FunctionName()  int{
	return 1
}
// 多个返回值
func FunctionName()  (a string,b int){
	return "1",2
}
type 定义自己的类型
  • 使用type变量可以自定义结构体,也可以定义已有类型的别名
type IZ int

这里并不是真正意义上的别名,因为使用这种方式定义后类型可以拥有更多的特性,且在类型转换时必须显示转化

类型转化
  • go语言中不存在隐式类型转化,所有转化都必须显示说明

go程序的基本书写结构

  1. 在完成包的 import 之后,开始对常量、变量和类型的定义或声明。
  2. 如果存在 init 函数的话,则对该函数进行定义(这是一个特殊的函数,每个含有该函数的包都会首先执行这个函数)。
  3. 如果当前包是 main 包,则定义 main 函数。
  4. 然后定义其余的函数,首先是类型的方法,接着是按照 main 函数中先后调用的顺序来定义相关函数,如果有很多函数,则可以按照字母顺序来进行排序。

go程序的执行顺序

  1. 按顺序导入所有被main包导入的其他包,然后每个包中执行如下流程
  2. 如果该包中又导入了其他包,递归执行第一步,但是每个包只会导入一次
  3. 然后以相反的顺序为每个包中初始化常量和变量<跟栈的顺序相同>,如果该包含有init函数的话,则调用该函数
  4. 在完成这一切之后,main也执行相同的过程,最后调用main函数开始执行程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值