前言
万丈高楼离不开稳固的地基。学习编程技术也是一样,基础不牢固谈不上后续进阶提升。本文开始学习GO语言的基本语法点...
本文大纲
1、变量声明与使用
GO语言使用var来声明变量
变量名:以字母或下划线开头,由一个或多个字母、数字、下划线组成
三种声明方式:
- 第一种,指定变量类型,声明后若不赋值,则使用默认值
var name type = value
例如:var a int = 10
- 第二种,根据值自行判定变量类型(类型推断Type inference)
var name = value
例如:var a int = 10
- 第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的(多个变量同时声明时,至少保证一个是新变量),否则会导致编译错误(简短声明)
name := value
例如:c : = 10
2、常量constant
GO语言声明常量
const identifier [type] = value
显式类型定义: const b string = "abc"
隐式类型定义: const b = "abc"
演示示例:
package main
import "fmt"
func main() {
const LENGTH int = 10
const WIDTH int = 5
var area int
const a, b, c = 1, false, "str" //多重赋值
area = LENGTH * WIDTH
fmt.Printf("面积为 : %d", area)
println()
println(a, b, c)
}
运行结果:
面积为 : 50
1 false str
常量可以作为枚举,常量组
const (
Unknown = 0
Female = 1
Male = 2
)
演示示例:
package main
import ("fmt")
func main() {
const (
x uint16 = 16
y
s = "abc"
z
)
fmt.Printf("%T,%v\n", y, y)
fmt.Printf("%T,%v\n", z, z)
}
运行结果:
uint16,16
string,`abc`
常量的注意事项:
- 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型
- 不曾使用的常量,在编译的时候,是不会报错的
- 显示指定类型的时,必须确保常量左右值类型一致,需要时可做显示类型转换
3、数据类型与运算符
GO中可用的数据类型总览如下图
- 布尔型bool,它的值:true or false
- 数值型:包括整型、浮点型、复数
整型中有符号类型:
int 32位系统占4字节(与int32范围一样),64位系统占8个节(与int64范围一样)
int8 占据1字节 范围 -128 ~ 127
int16 占据2字节 范围 -2(15次方) ~ 2(15次方)-1
int32 占据4字节 范围 -2(31次方) ~ 2(31次方)-1
int64 占据8字节 范围 -2(63次方) ~ 2(63次方)-1
rune int32的别称
整型中无符号类型:
uint 32位系统占4字节(与uint32范围一样),64位系统占8字节(与uint64范围一样)
uint8 占据1字节 范围 0 ~ 255
uint16 占据2字节 范围 0 ~ 2(16次方)-1
uint32 占据4字节 范围 0 ~ 2(32次方)-1
uint64 占据8字节 范围 0 ~ 2(64次方)-1
byte uint8的别称
浮点类型
float32 单精度 占据4字节 范围 -3.403E38 ~ 3.403E38 (math.MaxFloat32)
float64 双精度 占据8字节 范围 -1.798E208 ~ 1.798E308 (math.MaxFloat64)
复数
Go中复数默认类型是complex128(64位实数+64位虚数)。如果需要小一些的,也有complex64(32位实数+32位虚数)。
复数的形式为RE + IMi,其中RE是实数部分,IM是虚数部分,而最后的i是虚数单位。
如下所示:
var t complex128
t = 2.1 + 3.14i
t1 = complex(2.1,3.14) // 结果同上
fmt.Println(real(t)) // 实部:2.1
fmt.Println(imag(t)) // 虚部:3.14
Go语言中的运算符及优先级关系如下图
4、条件语句与循环语句
选择结构:条件满足,某些代码才会执行。0-1次
分支语句:if,switch,select
循环结构:条件满足,某些代码会被反复的执行多次。0-N次
循环语句:for是唯一的循环语句。(Go没有while循环)
判断语句 if
if 布尔表达式1 {
/* 在布尔表达式1为 true 时执行 */
} else if 布尔表达式2{
/* 在布尔表达式1为 false ,布尔表达式2为true时执行 */
} else{
/* 在上面两个布尔表达式都为false时,执行*/
}
分支语句 switch
switch num {
case 1: // case 语句可以是表达式
fmt.Println("111")
case 2:
fmt.Println("222")
default:
fmt.Println("000")
}
循环语句 for
// 传统的for循环
for init;condition;post{
}
// for循环简化
var i int
for ; ; i++ {
if(i > 10){
break;
}
}
// 类似while循环
for condition {}
在掘金(juejin.cn) 一起分享知识,Keep Learning!
本文正在参加技术专题18期-聊聊Go语言框架