青训营走进Go语言基础语法 | 豆包MarsCode AI刷题

65 阅读3分钟

Go特点

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. 丰富的标准库
  4. 完善的工具链
  5. 静态编译
  6. 快速编译
  7. 跨平台
  8. 垃圾回收

入门

基础语法

    1. 运行 go run main.go
    1. 编译 go build main.go ./main来运行
  • 3.变量
  • 变量 var a=自动推导 或 var b,c int = 1,2来指定
  • f:=value
  • 4.常量
  • const s=
  • 5.if else -`package main

import "fmt"

func main() {

if 7%2 == 0 {
	fmt.Println("7 is even")
} else {
	fmt.Println("7 is odd")
}

if 8%4 == 0 {
	fmt.Println("8 is divisible by 4")
}

if num := 9; num < 0 {
	fmt.Println(num, "is negative")
} else if num < 10 {
	fmt.Println(num, "has 1 digit")
} else {
	fmt.Println(num, "has multiple digits")
}

}

  • 6.for
  • 7.switch
  • 8.数组 var a [5] int
  • 9.切片s:=make([]string,3)
  • s.append(s,'e','f')
  • fmt.Println(s[1:])像python
  • 10.map m:=make(map[string]int)
  • r,ok:=m["unknow"] //0,false判断有没有存在这个键值对
    1. range 遍历 nums:=[]int{2,3,4} for i,m :=range nums

.....

[16] 字符串格式化

首先,最常用的是 Println() ,它的作用是打印变量并换行

Go 中也是有 Printf() 的,与 C 中的相比更加智能,你可以用 %v 来自动判断类型,而无需纠结整型用 %d ,实行用 %f 之类的

使用 %+v 可以打印详细信息,而 %#v 则可以更加详细

保留位数的浮点数与 C 中的做法相同

[17] JSON 处理

Go 中的 JSON 处理极为方便,对结构体使用 json.Marshal() 函数就能自动序列化(不要忘记首字母大写)

序列化后得到一个 byte 数组,如果要打印的话需要转换为 string 类型

正常序列化之后得到的都是首字母大写的,可以在结构体处为 JSON 格式加一个 tag

序列化的 JSON 可以使用 json.Unmarshal() 来解析到一个空的变量里面

js

package main

import ( "encoding/json" "fmt" )

type userInfo struct { Name string Age int json:"age" Hobby []string } func main() { a := userInfo{Name: "wang", Age: 18, Hobby: []string{"Golang", "TypeScript"}} buf, err := json.Marshal(a) if err != nil { panic(err) }

fmt.Println(buf)         // [123 34 78 97...]
fmt.Println(string(buf)) // {"Name":"wang","age":18,"Hobby":["Golang","TypeScript"]}
    
buf, err = json.MarshalIndent(a, "", "\t")
if err != nil {
	panic(err)
}
fmt.Println(string(buf))

var b userInfo
err = json.Unmarshal(buf, &b)
if err != nil {
	panic(err)
}
fmt.Printf("%#v\n", b) // main.userInfo{Name:"wang", Age:18, Hobby:[]string{"Golang", "TypeScript"}}

}

[18] 时间处理

使用 time.Now() 可以快速获取当前时间

也可以用 time.Date() 去构造一个带时区的时间,有很多方法可以使用获取年月日时分秒

可以使用 Sub() 方法得到时间段,时间段又可以使用方法去得到它有多少小时,多少分钟,多少秒

使用 Format() 方法去格式化时间,不像其他编程语言使用诸如 yyyy-M-d 之类的标识符,Go 是以一个特殊的时刻(2006 年 1 月 2 日 下午 3 点 4 分 5 秒,这个时刻是写在包里面的)为例子,来理解你想表达时间的格式

同样地,使用 Parse() 并提供这个时刻的示例,可以解析你写成字符串的时间

你可以使用 now.Unix() 来获取当前的 Unix 时间戳

[19] 数字解析

使用 strconv 包中的 ParseFloat() 和 ParseInt() 来快速解析字符串

如果确定是 10 进制,也可以使用 Atoi() 来快速转换成数字

同样的,可以使用 Itoa() 来把数字转换为字符串

[20] 进程信息

使用 os.Args 来获取执行时获取的一些命令行参数

使用 os.Getenv() 与 os.Setenv() 来获取与写入环境变量

使用 exec.Command() 来启动子进程并获取其输入输出