这是我参与「第五届青训营」伴学笔记创作活动的第 3 天
go基础语法
- Go 语言范围(Range) Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。
for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:
for key, value := range oldMap {
newMap[key] = value
}
如果只想读取 key,格式如下:
for key := range oldMap
或者
for key, _ := range oldMap
如果只想读取 value,格式如下:
for _, value := range oldMap
- 语言结构体
结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。 如果要访问结构体成员,需要使用点号 . 操作符,格式为:
结构体.成员名"
package main
import "fmt"
type Books struct {
title string
author string
subject string
book_id int
}
func main() {
var Book1 Books /* 声明 Book1 为 Books 类型 */
/* book 1 描述 */
Book1.title = "Go 语言"
Book1.author = "www.runoob.com"
Book1.subject = "Go 语言教程"
Book1.book_id = 6495407
/* 打印 Book1 信息 */
printBook(Book1)
}
3.Go 错误处理
Go 语言通过内置的错误接口提供了非常简单的错误处理机制。
error类型是一个接口类型,这是它的定义:
type error interface {
Error() string
}
4.指针 Go语言中的指针是一种指向内存地址的变量,它允许程序通过指针访问内存中的值。
声明指针变量时,在变量类型前面加上*号,如:var p *int。可以使用&符号取得变量的内存地址,如:p := &x。可以使用*符号访问指针变量所指向的内存地址的值,如:fmt.Println(*p)。
5.字符串 字符串拼接
func main() {
s1 := "hello"
s2 := "world"
s3 := s1 + " " + s2
fmt.Println(s3) // "hello world"
}
字符串长度: 可以使用len函数来获取字符串的长度
字符串比较: ==或者!=
字符串访问:[]运算符加数字
字符串切片: 可以使用s[start:end]来获取字符串的子串
6.json Go语言中有许多第三方库可用来处理JSON格式的数据,其中最流行和官方推荐的是"encoding/json"包。
这个包提供了Marshal和Unmarshal函数来进行JSON序列化和反序列化。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "Tom", Age: 18}
b, _ := json.Marshal(p)
fmt.Println(string(b))
// Output: {"name":"Tom","age":18}
var p2 Person
json.Unmarshal(b, &p2)
fmt.Println(p2)
// Output: {Tom 18}
}
7.函数 Go语言中的函数是由一组语句组成的可重复调用的代码块。
函数定义格式:
func function_name( [parameter list] ) [return_types] {
函数体
}
- 时间处理
Go语言中有一个"time"包来处理时间相关的操作。
这个包提供了很多函数和类型来处理时间,主要包括:
- time.Now: 获取当前时间
- time.Time: 时间类型
- time.Duration: 时间间隔
- time.Parse: 解析时间字符串
- time.Format: 格式化时间 9.数字解析
Go语言中有一个"strconv"包来处理数字解析。
这个包提供了很多函数来将字符串转换为数字类型,主要包括:
- strconv.ParseBool: 解析布尔值
- strconv.ParseFloat: 解析浮点数
- strconv.ParseInt: 解析整数
- strconv.ParseUint: 解析无符号整数
- 进程信息 Go语言中有一个"os"包来获取进程信息。
这个包提供了很多函数来获取进程相关信息,主要包括:
-
os.Getpid: 获取当前进程的PID
-
os.Getppid: 获取当前进程的父进程PID
-
os.Getuid: 获取当前进程的用户ID
-
os.Getgid: 获取当前进程的组ID
-
os.Getgroups: 获取当前进程所属的所有组ID