这是我参与「第五届青训营 」笔记创作活动的第1天
Go 语言基础 - 基础语法
.一、本堂课重点内容:
- 安装golang
- 配置继承开发环境
- 基础语法
二、详细知识点介绍:
- 基础语法
- 变量
var name = value name:=value - 判断 if 后面没有小括号
- 循环 没有while 和 do while 只有for循环
- 分支 switch 不需要break 只跑唯一一个分支 变量可以是任意类型 可以用来代替if
- 数组
var a [5]int长度固定不常用 - 切片 创建切片
s:= make([]string,3)追加元素s = append(s,"d")切片间复制c := make([]string,len(s)) copy(c,s) - map 创建
m := make(map[string]int) m["one] = 1读取r,ok := m["one"]删除delete(m,"one") - range 快速遍历
nums := []int{2,3,4} for i,num := range nums{fmt.Println("index:",i,"num:",num)}不需要的参数可使用下划线代替 - 函数
func add(a int, b int) intfunc exists(m map[string]string,k string) (v string,ok bool){} - 指针 对传入参数进行修改
func add2ptr(a *int){*n +2} - 结构体
type user struct{name string password string} - 结构体方法 第一种写法 可以对结构体进行修改
func (u *user) restPassword(password string){u.password = password}第二种写法func (u user) checkPassword(password string) bool { return u.password == password} - 错误处理 在返回值里添加
err error - 字符串格式化
fmt - JSON处理 序列化
buf,err := json.Marshal()反序列化var b type json.Unmarshal(buf,&b) - 时间处理
now := time.Now()获取时间戳time := time.Unix() - 数字解析 字符串和数字的转换包
strconv - 进程信息 两个包
os os/exec获取和写入环境变量os.Getenv("PATH") os.Setenv("AA","BB")
- 变量
三、实践练习例子:
- 猜数字游戏
package main
import (
"bufio"
"fmt"
"math/rand"
"os"
"strconv"
"strings"
"time"
)
func main() {
maxNum := 100
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
fmt.Println("Please input your guess")
reader := bufio.NewReader(os.Stdin)
for{
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occurred while reading input. Please try again",err)
continue
}
input = strings.Trim(input,"\r\n")
guess,err := strconv.Atoi(input)
if err != nil {
fmt.Println("Invalid input. Please enter a integer value")
continue
}
fmt.Println("Your guess is",guess)
if guess > secretNumber {
fmt.Println("Your guess is bigger than the secret number. Please try again")
}else if guess < secretNumber {
fmt.Println("Your guess is smaller than the secret number. Please try again")
} else {
fmt.Println("Correct, you Legend!")
break
}
}
}
四、课后个人总结:
- 本章有什么知识点不容易掌握?
- 进程信息