go语言语法

ads

这篇文章来自 知识星球中 沐风晓月的分享,非常适合初学者阅读。

前言

本文是根据阳哥 知识星球中的资料 整理的学习笔记,第一章关于Go语言中常见的语法现象。

我的思考:

一门语言中的语法都是固定的,基础语法几乎都差不多,本篇文章涉及到 Go 入门脚本,变量,条件语句,函数等语法现象,用一篇文章梳理Go语言中可能出现的所有语言现象,便于初学者学习和复习所用。

一. Go 语言的 helloworld

源文件:

文件名:hello.go

package main

import "fmt"

func main()  {
 fmt.Println("helloworld")

}

对于第一个代码的解释:

  • 源文件使用 UTF-8 编码,对 Unicode 支持良好,每个源文件都属于包的一部分,在文件头部用 package 声明所属的包名称。

  • .go 作为文件的拓展名

  • 相比其他语言,语句结束的分号会被默认省略

  • import 是用来导入标准库或者第三方包

其他注意事项:

  • fmt.Println 这里的 Println 的p 要大写;
  • 导入的包,如果有多余的可以删掉

可以直接运行:

go run main.go

二. 变量

Go 语言中使用 var 定义变量,支持类型推断

1.定义两个变量并输出

package main

import "fmt"

func main()  {
 var x int32
 var y = "hello,world"
 fmt.Println("输出的结果为", x,y)
}

输出结果:

PS C:Gosrctest01> Go run .variable.Go
输出的结果为 0 hello,world

注意点:

  • 编译器会把变量的初始值初始化为零,避免出现意外
  • PrintfPringln 是有区别的,不能通用。

在函数内部,可以省略 var 关键字,但要注意赋值符号的变化:由 = 变成了 :=

package main

import "fmt"

func main()  {
  y := "hello,world"
 fmt.Println("输出的结果为",y)
}

三. 表达式

Go 语言有三种流程控制语句

3.1 if 语句

package main

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

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

执行结果:

3.3 for 语句

for 循环的用法比较多,我们来举几个例子:

案例一:

package main

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

func main ()  {
 x :=0
 //打印0 1 2 3 4
 for x<5{
  println(x)
  x++
 }
}

案例三:打印从 10 到 0 的值

package main

func main ()  {
 x :=10
 for {
  println(x)
  x--
  if x < 0{
   break
  }
 }
}

案例四:

有时候也会对列表进行遍历,列表定义:x:= []int{100,101,102}

package main

func main ()  {

 x :=[]int{100,101,102}
 for i,n :=range x {
  println(i,n)
 }
}

在 Go 语言中,遍历数据或切片时可以用 range,range 会产生两个值,分别是数据的索引与值,就像案例四中,iv分别表示索引和值:

索引为 0 的时候值是 100

运行结果:

四. 函数

函数可以定义多个返回值,甚至对其命名

package main

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)

}

运行结果:

总结

本文后续还会持续增加一些语法现象,欢迎大家收藏备用。

这是沐风晓月在 知识星球 新人报道的打卡,欢迎大家多多关照。

有用请关注👇🏻,笔芯❤


往期推荐

我的学习小圈子




粉丝福利:参与活动给大家发红包🧧 


「2021年中总结」转岗做Go,北京买房

程序员副业接单做私活避坑指南!




欢迎加入我的交流群,专注Go语言

每周发红包、每月送书、不定期福利。

扫码备注「加群」,一起进步!


👇「阅读原文」,关注沐风晓月のCSDN


点「赞」和「在看」是最大的支持👇

最后编辑于:2024/1/9 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com