一文带你回顾go语言常见语法现象
前言
一门语言中的语法现象都是固定的,基础语法几乎都差不多,本篇文章涉及到go入门脚本,变量,条件语句,函数等语法现象的案例, 用一篇文章梳理go基础中可能出现的所有语言现象。
先从宏观上了解一些语法点写法,再在后面的文章中从微观角度仔细去剖析每个出现的语法现象。
本文的初衷是用一篇文章涵盖go语言常见的语法现象案例,便于后期回顾复习使用,可以先点赞收藏,后续会持续更新。
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云博客专家
😉😉 💕 座右铭: 先努力成长自己,再帮助更多的人,一起加油进步
🍺🍺🍺 💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
一. go语言的helloworld
源文件:
文件名: hello.go
package main
import "fmt"
func main() {
fmt.Println("hellworld")
}
对于第一个代码的解释:
-
源文件使用UTF-8编码,对Unicode支持良好,每个源文件都属于包的一部分,在文件头部用package声明所属的包名称。
-
以
.go
作为文件的拓展名,语句结束的分号会被默认省略。 -
import
是用来导入标准库或者第三方包
其他注意事项:
fmt.Println
这里的Println的p
要大写;- 导入的包,如果有多余的可以删掉
可以直接运行:
go run main.go
二. 变量
go语言中使用var定义变量,支持类型推断
案例一: 定义两个变量并输出
package main
import "fmt"
func main() {
//fmt.Println("hellworld")
var x int32
var y = "hello,world"
fmt.Println("输出的结果为", x,y)
}
输出结果:
PS C:\go\src\test01> go run .\variable.go
输出的结果为 0 hello,world
注意点:
- 编译器会把变量的初始值初始化为零,避免出现意外
Printf
和Pringln
是有区别的,不能通用。
在函数内部,可以省略的VAR 关键字,但要注意赋值符号的变化:
package main
import "fmt"
func main() {
//fmt.Println("hellworld")
y := "hello,world"
fmt.Println("输出的结果为",y)
}
三. 表达式
go语言有三种流程控制语句
3.1 if语句
package main
//import "fmt"
func main () {
var x = 100
if x >0 {
println("x =",x)
}else if x < 0 {
println("x =",-x)
}else{
println("x =",0)
}
}
3.2 switch语句
package main
//import "fmt"
func main () {
x :=100
switch {
case x>0:
println("x")
case x<0:
println("-x")
//case x!=0:
// println("0")
case x == 0:
println("0")
default:
println("0")
}
}
这里需要注意一点:
x=0
表示赋值,x==0
表示 ```等于````.
所以在这个case语句中, case x=0:
会报错,但可以改为!=
不等于0
执行结果:
PS C:\go\src\test01> go run .\variable.go
x
3.3 for 语句
for 循环的用法比较多,我们来举几个例子:
案例一:
package main
//import "fmt"
func main () {
//打印0 1 2 3 4
for i:=0 ;i<5;i++{
println(i)
}
//打印 4 3 2 1 0
for i :=4;i>=0 ;i--{
println(i)
}
}
下面的for循环,类似于while循环的例子,比如while(x <5 {})
案例二:
package main
//import "fmt"
func main () {
x :=0
//打印0 1 2 3 4
for x<5{
println(x)
x++
}
}
案例三:打印从10到0的值
package main
//import "fmt"
func main () {
x :=10
for {
println(x)
x--
if x < 0{
break
}
}
}
有时候也会对列表进行遍历,列表定义:x:= []int{100,101,102}
案例四:
package main
//import "fmt"
func main () {
x :=[]int{100,101,102}
for i,n :=range x {
println(i,n)
}
}
在go语言中,遍历数据或切片时可以用range,range会产生两个值,分别是数据的索引与值,就像案例四中,i
和v
分别表示索引和值:
索引为0的时候值是100
运行结果:
PS C:\go\src\test01> go run .\variable.go
0 100
1 101
2 102
四. 函数
函数可以定义多个返回值,甚至对其命名
package main
//import "fmt"
import (
"errors"
"fmt"
)
func div(a,b int) (int,error) {
if b == 0 {
return 0,errors.New("division by zero")
}
return a/b,nil
}
func main(){
a,b := 9,2 //定义多个变量
c,err := div(a,b) //接收多个值
fmt.Println(c,err)
fmt.Println(a,b)
}
这里遇到一个小插曲,如下图:
发现代码会提示b没有定义,在a/b
位置有下划线,但执行结果是对的。 经过反复排查和沟通,最后发现是SDK 没有配置
在这里沐风晓月感谢各位帮助过我的小伙伴。
五. 数据
5.1 切片
切片可以实现类似动态数组的功能:
package main
import(
"fmt"
)
func main() {
x := make([]int ,0,5) //创建容量为5的切片
for i :=0;i<10;i++{
x=append(x,i) //追加数据,如果超过容量,自动分配更大空间
}
fmt.Println(x)
}
输出结果:
[0 1 2 3 4 5 6 7 8 9]
5.2 字典
package main
import "fmt"
func main() {
m:=make(map[string]int) //创建字典类型对象
m["a"] =1
x,ok := m["b"]
fmt.Println(x,ok)
y,ok := m["a"]
fmt.Println(y,ok)
}
运行结果:
PS C:\go\src\test01> go run .\variable.go
0 false
1 true
总结
本文后续还会持续增加一些语法现象,可以收藏备用,后续全部整理完后,达到用一篇文章复习所有go语言常见语法点目的。
💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
💕 博客主页:mufeng.blog.csdn.net
💕 本文由沐风晓月原创,首发于CSDN博客
💕 全力以赴,持续学习,不负如来不负卿
相关文章
- 一个Go语言实现的流量回放工具
- 基于go语言搭建高性能IM系统
- Go语言中常见100问题-#24 Not making slice copies correctly
- Go语言内嵌结构体成员名字冲突
- Go语言圣经–包和文件-导入包习题详解编程语言
- go语言的常量详解编程语言
- Go语言爬取图片小程序
- Go语言Context(上下文)
- 程序Linux上运行Go语言程序的指南(linux运行go)
- Go语言环境配置:在 Linux 下实现(go环境搭建linux)
- 提升Go读取Oracle的速度(go读取oracle速度)
- Go语言查询Oracle数据库实战实例(go语言查询oracle)
- Go语言快速安装Oracle数据库(go语言安装oracle)
- ODBC数据驱动程序连接Oracle数据库Go语言之旅(go使用oracle)
- 程序Go语言调用Oracle数据库驱动程序指南(go oracle驱动)