Go语言人们语法笔记|青训营

54 阅读3分钟

Go语言笔记

俱怀逸兴壮思飞,欲上青天揽明月!

GO语言开发环境配置

这个详细请见此宝藏博客 GO语言开发环境配置

Go Module

go mod 命令

  • go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
  • go mod edit 编辑go.mod文件
  • go mod graph 打印模块依赖图
  • go mod init 初始化当前文件夹, 创建go.mod文件
  • go mod tidy 增加缺少的module,删除无用的module
  • go mod vendor 将依赖复制到vendor下
  • go mod verify 校验依赖
  • go mod why 解释为什么需要依赖 go get 在项目中执行go get命令可以下载依赖包,并且还可以指定下载的版本哦
  • 运行go get -u将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
  • 运行go get -u=patch将会升级到最新的修订版本
  • 运行go get package@version将会升级到指定的版本号version

语法简述

go真是有趣啊QwQ,以此笔记来记录自己学Go的光辉历程!:)

变量声明和赋值: Go语言使用var关键字来声明变量,并使用=操作符来进行赋值。var name string = "Gua"

数据类型: Go语言具有以下基本的数据类型吼吼吼:

  • bool:布尔类型,取值为true或false。
  • int、int8、int16、int32、int64:整数类型,分别表示不同位数的有符号整数。
  • uint、uint8、uint16、uint32、uint64:无符号整数类型。
  • float32、float64:浮点数类型。
  • string:字符串类型。
  • array:数组类型。
  • slice:切片类型。
  • map:映射类型。
  • struct:结构体类型。

控制流: Go语言提供了一些常用的控制流语句,例如条件语句(if)、循环语句(for)、选择语句(switch)。

if语句

if age >= 18 {
	fmt.Println("成年人")
} else {
	fmt.Println("未成年人")
}

for语句

for i := 0; i < 5; i++ {
	fmt.Println(i)
}

switch语句

switch day {
	case 1:
		fmt.Println("星期一")
	case 2:
		fmt.Println("星期二")
	default:
		fmt.Println("其他")
}

函数定义

func add(a, b int) int {
	return a + b
}

结构体

type Person struct {
	name string
	age  int
}

func main() {
	p := Person{name: "John", age: 30}
	fmt.Println(p.name, p.age)
}

小声嘟嘟:初学GO语言真的好不习惯语法233

Go语言的语法特性

开开眼界版

  1. 首先让小呱雀跃的是Go语言的指针 上学期一直在敲C++,被指针痛击的我,看到他怎能不心动嘿嘿(痴汉笑
func main() {
    x := 42
    p := &x         // p是指向x的指针
    fmt.Println(*p) // 输出42,*p表示解引用操作
}
  1. 切片 对数组的动态封装,允许您创建可变长度的序列 好方便!窝滴弹性数组(流口水
func main() {
    numbers := []int{1, 2, 3, 4, 5}
    slice := numbers[1:3] // 创建从索引1到2的切片
    fmt.Println(slice)    // 输出[2 3]
}
  1. 映射 一种键值对的集合,类似于其他编程语言中的哈希表或字典
func main() {
    person := map[string]int{
        "John": 28,
        "Jane": 24,
    }
    fmt.Println(person["John"]) // 输出28
}
  1. 接口 定义了一组方法的契约,类型可以实现这些方法来满足接口的需求
type Shape interface {
    area() float64
}

type Circle struct {
    radius float64
}

func (c Circle) area() float64 {
    return math.Pi * c.radius * c.radius
}
  1. 并发 Go语言内置支持轻量级的并发,通过goroutines和channels来实现
func main() {
    go func() {
        fmt.Println("Hello from goroutine")
    }()
    time.Sleep(time.Second) // 等待一段时间,以保证goroutine执行完毕
}

然后然后然后还有好多好多哒 人生苦短,努力掌握Go语言吧! 加油捏!