go语言的基本语法

01.关键字与标识符

关键字:被赋予了特殊含义的单词,又叫保留字

Go语言中的关键字一共有25
在这里插入图片描述

1.关键字和标识符

标识符定义

  1. Go语言对各种变量、方法、函数等命名时使用的字符序列。
  2. 由若干个字母、下划线(_)、和数字组成,且第一个字符必须是字母。

标识符声明

  1. 使用标识符之前必须进行声明。
  2. 声明一个标识符就是将这个标识符与常量、类型、变量、函数或者代码包绑定在一起。
  3. 在同一个代码块内标识符的名称不能重复。

标识符特点

  1. 标识符的命名要尽量采取简短且有意义。
  2. 不能和标准库中的包名重复。
  3. 为变量、函数、常量命名时采用驼峰命名法,例如 stuId、stuName。

标识符规则
在这里插入图片描述

预定义标识符

自身具有一些特殊含义的标识符

Go语言中的预定义标识符一共有 37 个。

在这里插入图片描述

标识符声明示例

var stuId int 
//声明一个int类型、名为stuId的标识符
var stuName string = “姓名“ 
//声明一个string类型、名为stuName、值为姓名的标识符

错误标识符示例

var 1num int  
//不能以数字开头
var break string 
//不能以系统保留关键字作为标识符

02.变量和常量

变量

变量的定义:
一种能够储存值或者计算结果的抽象概念。
是内存中的一个数据存储空间的标识,变量可以看做是一个内存地址,通过内存地址,我们可以找到这个地址所存储的数据。
在这里插入图片描述

局部变量
函数体内声明的变量称之为局部变量,作用域只在函数体内,函数的参数和返回值变量都属于局部变量。函数调用结束后这个局部变量就会被销毁。
全局变量
在函数体外声明的变量称之为全局变量,全局变量声明必须以 var 关键字开头,如果想要在外部包中使用全局变量的首字母必须大写。

形参变量
在定义函数时函数名后面括号中的变量叫做形式参数变量。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁。

变量标准格式声明

关键字 var 开头,后置变量类型
格式: var 变量名 变量类型
标准初始化格式: var 变量名 变量类型 = 初始化值

//示例1:
var goodsName string = "Go语言"
//示例2
var stuName string
stuName = "小明"
变量批量格式声明

存放一组变量定义

格式: var{
a 变量类型
b 变量类型
c,d 变量类型
}

//示例
var {
goodsPrice float32
goodsNum,goodsId int
}
goodsId = 123
goodsNum = 5
goodsPrice = 6.7
变量简短格式声明

定义在函数内部的显式初始化,不提供数据类型

格式:
变量名 :=变量值
变量名1,变量名2 := 变量值1,变量值2

//示例1:
goodsName :="Go语言"
//示例2
goodsSize,goodsID := "50kg","go001"

常量

常量的定义:
一种简单的标识符,在程序运行时它的值不会被改变
在这里插入图片描述
标准定义格式:
const 常量名[常量类型] = 常量值
显式定义格式:
const 常量名 常量类型 = 常量值
隐式定义格式:
const 常量名 = 常量值

//示例
package main
import "fmt"
func main() {
	const a int = 1
	const b,c = 2,"C"
	fmt.Println(a)
	fmt.Println(b)
	fmt.Println(c)
}
//运行结果为:
//1
//2
//C

a是显式类型定义,即能看到数值类型。
b,c是隐式类型定义。

思考题
1.
在这里插入图片描述2.

package main
import "fmt"
func main() {
        var i int 
	fmt.Println(i)
	const a int 
}
//运行结果为:?

常量与变量区别:

1.可以声明一个变量而不同时初始化它
2.常量需要初始化
(Go 无法在编译时检测到运行时错误,但常量属于编译时,因此可以更早地检测到错误

03.数据类型

在这里插入图片描述

数字类型:
在这里插入图片描述

package main
import "fmt"
func main() {
    var num int
    fmt.Println("num=",num)
    var pai_32 float32 = 3.12345678901234567890
    var pai_64 float64 = 3.12345678901234567890
    fmt.Println("pai_32=",pai_32)
    fmt.Println("pai_64=",pai_64)
    var num1 complex64 = 1.2+3i
    var num2 =complex(1.2,3)
    fmt.Printf("num1的数据类型是:%T\n",num1)
    fmt.Printf("num2的数据类型是:%T\n",num2)
}
//运行结果为:
//num= 0
//pai_32= 3.1234567
//pai_64= 3.1234567890123457
//num1的数据类型是:complex64
//num2的数据类型是:complex128

数值类型默认值为0
float32大约可以提供小数点后6到8位的精度
float64可以提供小数点后15位的精度
Complex64分为32位实数和32位虚数
Complex128分为64位实数和64位虚数

04.运算符

算数运算符

在这里插入图片描述

  • 两个运算数的类型必须相同并且为基本数据类型
package main
import "fmt"
func main() {
	fmt.Println("1/2 =",1/2)
}
//运算结果为:
1/2 = 0

package main
import "fmt"
func main() {
	fmt.Println("1.0/2 =",1.0/2)
}
//运算结果为:
1.0/2 = 0.5

  • 自增和自减在Go语言中构成单独的语句,不是表达式
	var a int = 1
	var b int
	a++			//正确
	b = (a++)		//错误,因为自增自减只能当作一个独立的语句使用
	++a			//错误,因为自增自减只能写在变量的后面

关系运算符
在这里插入图片描述

逻辑运算符
在这里插入图片描述

位运算符
在这里插入图片描述
在这里插入图片描述

位移运算符
在这里插入图片描述

package main
func main() {
	var a int = 1
	var b int = 2
	println("a&b=",a<<b)
	println("a&b=",a>>b)
}
//运行结果为:
a<<b= 4
a>>b= 0

1的二进制为01,左移2位是100,转换成十进制为4。 1的二进制为01,右移2位是00,转换成十进制是0。

赋值运算符
在这里插入图片描述

其他运算符
在这里插入图片描述

go不支持三元运算符 若要实现三元运算,可以使用if-else进行实现

05.数据类型转换

定义:

valueOfTypeB = typeB(valueOfTypeA)

  • Go语言所有的类型转换都必须显式的声明
  • 类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将 int16 转换为 int32)。
  • 当从一个取值范围较大的类型转换到取值范围较小的类型时(将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况。
  • 只有相同底层类型的变量之间可以进行相互转换(如将 int16 类型转换成 int32 类型),不同底层类型的变量相互转换时会引发编译错误(如将 bool 类型转换为 int 类型)
package main
import (
	"fmt"
	"reflect"
	"strconv"
)
func main() {
	// 初始化一个32位整型值
	var a int32 = 1234567890
	fmt.Printf("a的值为:%d,类型为:%s \n",a,reflect.TypeOf(a))
	b := int16(a)    //精度丢失
	fmt.Printf("b的值为:%d,类型为:%s \n",b,reflect.TypeOf(b))
	c := strconv.Itoa(int(a))
	fmt.Printf("c的值为:%s,类型为:%s \n",c,reflect.TypeOf(c))
}
//运算结果为:
a的值为:1234567890,类型为:int32
b的值为:722,类型为:int16
c的值为:1234567890,类型为:string

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值