Golang笔记之基础语法

Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。

标记

Golang程序是由换行符、注释、标识符和关键字等标记构成。

换行符

Golang允许没有;,一行代码以换行结束,如果有;也可以正常执行,但在ide里会在保存的时候被插件删除。

注释

Golang支持的注释有:

  • 单行注释
// 单行注释
  • 多行注释
/*
第一行注释
第二行注释
*/

标识符

标识符是程序中自定义的变量名、类名的一种标示,Golang合法标识符必须满足:

  1. 只能由a~zA~Z0~9_组成
  2. 第一个字符不能是数字
  3. 不能与Golang保留的关键字重名

合法的标识符:id idDelete n1 _foo

关键字

Golang中保留的关键字有:

关键字作用关键字作用关键字作用关键字作用关键字作用
break结束当前循环defaultswitch-case语块默认的casefunc声明函数的关键字interface接口类型selectselect-case语块
caseswitch-case语块defer释放局部变量gogoroutinemap字典类型struct结构体关键字
chan通道类型elseif-else语块goto跳转到标记处packageswitchswitch-case语块
const常量的修饰符fallthroughswitch-case语块强制执行一个caseifrange迭代器type类型
continue继续当前循环for循环import导入returnvar声明变量

预定义标识符:

appendboolbytecapclosecomplexcomplex64complex128uint16
copyfalsefloat32float64imagintint8int16uint32
int32int64iotalenmakenewnilpanicuint64
printprintlnrealrecoverstringtrueuintuint8uintptr

数据类型

基本类型

整型

类型长度范围
int/uint32或64
int8/byte8-128~127
int1616-32768~32767
int32/rune32-2147483648~2147483647
int6464-9223372036854775808~9223372036854775807
uint880~255
uint16160~65535
uint32320~4294967295
uint64640~18446744073709551615
uintptr

浮点型

类型长度范围
float3232IEEE-754
float6464IEEE-754
complex6432
complex12864

字符串

派生类型

指针

未完成

数组

未完成

结构体

Channel

未完成

函数

未完成

切片

未完成

接口

未完成

Map

未完成

变量

变量的声明

Golang的变量声明语法:

var foo int8
var abr int8 = 1

声明变量关键字是varint8是指定变量的类型;foo只声明,但是没有显示的赋值,此时foo的只是默认值,基础类型的变量的默认值:

变量类型默认值
int、uint、float32……0
string(空字符串)
boolfalse

Golang允许类型缺省,自动推断类型,所以必须赋初值:

var foo = 1

Golang支持的简写:

foo := 3

多变量声明

对于一组变量,Golang支持在一行里声明:

同类型的多个变量

var n1, n2, n3 int = 1, 2, 3
var n1, n2, n3 int
n1, n2, n3 = 1, 2, 3
var n1, n2, n3 = 1, 2, 3

简写

n1, n2, n3 := 1, 2, 3

这种自动推断机制可以用于声明一组不同类型的变量:

var id, username, isDelete = 1, "admin", false
id, username, isDelete := 1, "admin", false

常量

常量的声明

常量使用const修饰,不能用:=简写,自动推断同样适用。声明语法:

const abr int = 1
const id, username, isDelete = 1, "admin", false

常量在声明时必须赋值。常量的值允许是函数的返回值,但是必须是Golang内置的函数

var foo string = "hello"
const abr int = len(foo)

len()math包的函数。

常量组的声明

const (
	Success = 0
	Failed  = -1
)

常量组的声明中允许不写初始值(第一个除外),初始值会根据上一个常量来产生。

const (
	x = 1
	y = 2
	z
)

xyz的值一次是122z的继续沿用了y的值,不是沿用值而是沿用了等号右侧

const (
	x = 1<<iota
	y = 2<<iota
	z
)

xyz的值一次是148z的值等于2<<iota,第三行的iota值为22<<2等于8

iota

iota是一个特殊的变量,出现const后,iota的值被置为0,每声明一个常量,iota的值加一。

	const (
		n0 = iota    //0
		n1           //1
		n2           //2
		n3 = "Hello" //Hello
		n4           //Hello
		n5 = "World" //World
		n6 = 100     //100
		n7           //100
		n8 = iota    //8
		n9           //9
	)

iota类似与常量组的下标。

运算符

算术运算符

运算符描述
+
-
*
/整除
%取余
++自加
- -自减

关系运算符

运算符描述
==等式判断
!=等式判断取非
>大于判断
<小于判断
>=大于等于判断
<=小于等于判断

逻辑运算符

运算符描述
||
&&
!

位运算符

运算符描述
&按位与
|按位或
^按位异或
<<按位左移
>>按位右移

赋值运算符

运算符描述
=右侧的结果赋值给左侧
-=相减后赋值
*=相乘后赋值
/=相除后赋值
%=取余后赋值
<<=左移后赋值
>>=右移后赋值
&=按位与后赋值
|=按位或后赋值
^=按位异或后赋值

其他

运算符描述
&foo求foo的地址
*foo求foo的指针

运算符的优先级

  1. [] () . ->
  2. - (type) ++ -- *(指针) &(地址)!
  3. / *(乘) %
  4. + -
  5. << >>
  6. > < >= <=
  7. == !=
  8. &
  9. ^
  10. |
  11. &&
  12. ||
  13. ?:
  14. = *= /= %= += -= >>= <<= &= ^= |=
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值