这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
一、简介
Go 即Golang,它很容易用于构建简单、可靠和高效的软件。Go不仅拥有静态编译语言的安全和高性能,而且又达到了动态语言开发速度和易维护性。有人形容Go 语言:Go = C + Python , 说明Go 语言既有C 语言程序的运行速度,又能达到Python 语言的快速开发。
安装Go语言
访问 go.dev/1. 点击 Download ,下载对应平台安装包,安装即可
配置 Go 语言开发环境
可以选择安装 VS Code , 或者 Goland ,对于 VS Code,需要安装 Go 插件
二、基本语法
2.1 基础语法
package main
import (
"fmt"
)
func main() {
fmt.Printf("Hello World!")
}
2.2 变量
常见的变量类型包括字符串、整型、浮点型、布尔型,大部分使用方式与C语言类似。两种声明方式:
var name =
name:=
var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
f := float32(e)
g := a + "foo" // 可以通过加号拼接
常量将var改成const即可
const s string = "constant"
const h = 500
const i = 3e20 / h
2.3 if else 语句
注意:与c语言不同,if 后面无括号
if 7%2 == 0 {
fmt.Println("Yes")
} else {
fmt.Println("No")
}
2.4 循环
只有for循环,没有while循环。可以用continue继续循环,也可以用break跳出循环。
for i := 0; i < 9; i++ {
fmt.Println(i)
}
2.5 switch语句
//走完一个分支即跳出
a := 2
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
default:
fmt.Println("other")
}
// 可以在case里面写条件分支,比if else嵌套更加清晰
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Yes")
default:
fmt.Println("No")
}
2.6 数组:
变量类型在后面。数组的长度是固定的,所以在实际应用中,我们更多使用切片。
var a[5]int
2.7 切片
可以在任何时刻更改长度,用make来创建切片:
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
//用append来追加
s=append(s,"e","f")
//取出元素
fmt.Println(s[2:5])//左闭右开 2~4
fmt.Println(s[:5])//0~4
fmt.Println(s[2:])//2~
2.8 map
用make来创建map:
m := make(map[string]int)//key的类型string,value的类型int
m["one"]=1
m["two"]=2
2.9 range遍历
nums := []int{2, 3, 4}
sum := 0
for i, num := range nums {
sum += num
if num == 2 {
fmt.Println(i, num) //index:0 num:2
}
}
fmt.Println(sum) //9
2.10函数
注意变量类型后置
func add(a int,b int) int{
return a+b
}
2.11 指针
相比于c语言里的指针,此处的指针用途非常有限。比如试图将一个变量加2:
func add2(n int){
n+=2//无用
}
func add2ptr(n *int){
*n+=2//运用指针
}
func main(){
n:=5
add2ptr(&n)//需要加上&符号
fmt.Println(n)
}
2.12 结构体
//定义结构体user
type user struct{
name string
password string
}
// 初始化
a:=user{name:"Liu",password: "2004"}
2.13 字符串操作
a:="hello"
strings.Contains(a,"ll")//a里面是否包含另一个字符串 true
strings.Count(a,"l")//字符串计数 2
strings.Index(a,"ll")//查找字符串位置 2
strings.Repeat(a,2)//重复 hellohello
len(a)//计算长度
2.14 字符串格式化:一概用%v
n:=123
fmt.Printf("n=%v\n",n)
2.15 时间处理
//使用time.Now()快速获取当前时间
t=time.Now()