这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记。笔者于此之前未曾接触过go语言。此笔记是笔者在听完第一堂课之后的一些感想和对go语言编程基础部分的一些总结。
- 1. go语言是什么 Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
- 2. go语言的优势 go语言具有高性能、高并发,语言简单、学习曲线平滑,标准库丰富,工具链完善,编译速度快,支持跨平台,有垃圾回收功能等多重优势。
- 3.go语言的使用环境
- [安装golang](go.dev/)
- IDE:vscode,goland等
- 4.基础语法 1.helloworld
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
第一行package main是代表程序是main包的一部分,main包也就是程序的入口包。 第三行导入了标准库里的fmt包,主要用于向屏幕输出内容。 go语言主要通过“fmt.Println”来输出内容。 (注:go语言行命令结束后不需要使用“;”来结束)
2.变量
go语言有三种定义变量的方式,分别如下
var a = "initial"
var b, c int = 1, 2
f := float32(e)
3.判断与循环
go语言中的ifelse和for后面不需要“()”,且“{”必须写在if或者for的同一行。 对于switch而言,不同于c++,go语言不需要break,且case后可接任意变量类型
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
continue
}
fmt.Println(n)
}
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
5.数组与切片
数组长度固定所以很少使用。切片可以任意更改长度,使用make创造切片,可以像数组一样取值,使用append来追加元素。
s := make([]string, 3) //使用make创建切片
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("get:", s[2])
fmt.Println("len:", len(s)) //利用len函数计算s切片的长度
s = append(s, "d") //使用append追加元素
c := make([]string, len(s))
copy(c, s) //利用将s的切片复制给c切片
fmt.Println(c) // [a b c d e f]
fmt.Println(s[2:5]) // 类似python的切片操作,取出2~4号元素
fmt.Println(s[:5]) // [a b c d e]
fmt.Println(s[2:]) // [c d e f]
good := []string{"g", "o", "o", "d"}
fmt.Println(good) // [g o o d]
6.map
别名哈希,集合。是最常用的数据结构之一,由键值对(key和value)组成。
m := make(map[string]int) //通过make创建一个空map
m["one"] = 1 //通过[]对map键值对进行赋值
m["two"] = 2
fmt.Println(m) // map[one:1 two:2]
fmt.Println(len(m)) // 2
fmt.Println(m["one"]) // 1
fmt.Println(m["unknow"]) // 0
r, ok := m["unknow"] //查看m中是否存在“unknow”的键,如果存在,r赋值为对应的值,否则为0;如果存在,ok赋值为true,否则为false
fmt.Println(r, ok) // 0 false
delete(m, "one") //删除键值对
7.range
range可以用来遍历数组和map,对于数组而言会返回索引和对应位置的值共2个值。如果不需要索引则可以用下划线来忽略。
- 5.总结
go语言是一门和c/c++语言十分相像的语言,但相比与C++,Go并不包括如枚举、异常处理、继承、泛型、断言、虚函数等功能,但增加了切片型、并发、管道、垃圾回收、接口等特性的语言级支持。
- 参考资料: