GO语言基础(下) | 青训营

81 阅读4分钟

今天继续学习Go语言的内容,主要学习错误处理,字符串操作,字符串格式化,JSON处理(序列化,反序列化),时间处理,字符串和数字之间的转换,进程信息这些方面的内容。

主要内容

错误处理:

在Go语言中,错误是一种常见的情况,例如文件读写失败、网络请求出错等。Go鼓励使用返回错误值的方式来处理错误,这种模式使代码更加清晰和可控。

goCopy codepackage main
​
import (
    "fmt"
    "errors"
)
​
func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("除数不能为零")
    }
    return a / b, nil
}
​
func main() {
    result, err := divide(10, 2)
    if err != nil {
        fmt.Println("错误:", err)
    } else {
        fmt.Println("结果:", result)
    }
}

字符串操作:

Go语言提供了丰富的字符串操作函数。您可以通过索引、切片和连接等方式操作字符串。

goCopy codepackage main
​
import "fmt"
​
func main() {
    str := "Hello, World!"
    fmt.Println(len(str))
    fmt.Println(str[0])
    fmt.Println(str[7:12])
    fmt.Println(str + " Welcome")
}

字符串格式化:

Go语言的字符串格式化使用fmt.Sprintf函数,类似于C语言的printf函数。

goCopy codepackage main
​
import "fmt"func main() {
    name := "Alice"
    age := 25
    fmtStr := fmt.Sprintf("姓名:%s,年龄:%d", name, age)
    fmt.Println(fmtStr)
}

JSON处理 :

Go语言内置了对JSON的支持,可以方便地进行结构体和JSON之间的序列化与反序列化。

goCopy codepackage main
​
import (
    "fmt"
    "encoding/json"
)
​
type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}
​
func main() {
    person := Person{Name: "Bob", Age: 30}
​
    // 序列化
    jsonBytes, _ := json.Marshal(person)
    fmt.Println(string(jsonBytes))
​
    // 反序列化
    var newPerson Person
    json.Unmarshal(jsonBytes, &newPerson)
    fmt.Println(newPerson)
}

时间处理:

Go语言的时间包time提供了丰富的时间操作功能,如获取当前时间、格式化时间、时间运算等。

goCopy codepackage main
​
import (
    "fmt"
    "time"
)
​
func main() {
    now := time.Now()
    fmt.Println("当前时间:", now)
​
    future := now.Add(time.Hour * 24)
    fmt.Println("未来一天:", future)
}

字符串和数字之间的转换:

在Go语言中,字符串和数字之间的转换需要使用strconv包。

goCopy codepackage main
​
import (
    "fmt"
    "strconv"
)
​
func main() {
    str := "123"
    num, _ := strconv.Atoi(str)
    fmt.Println(num)
​
    num2 := 456
    str2 := strconv.Itoa(num2)
    fmt.Println(str2)
}

进程信息:

Go语言的os包和os/exec包提供了获取和执行进程信息的功能。

goCopy codepackage main
​
import (
    "fmt"
    "os"
    "os/exec"
)
​
func main() {
    pid := os.Getpid()
    fmt.Println("当前进程ID:", pid)
​
    cmd := exec.Command("ls")
    cmdOutput, _ := cmd.Output()
    fmt.Println("ls命令输出:", string(cmdOutput))
}

总结

在本次学习中,我又了解了Go语言的一些扩展模块,包括错误处理、字符串操作、字符串格式化、JSON处理、时间处理、字符串和数字之间的转换以及进程信息获取。下面还是对每个它们进行一下总结:

错误处理:Go鼓励使用返回错误值的方式来处理各种情况,如文件操作、网络请求等。错误处理使得代码更加可控和健壮,通过与error类型的配合,我们可以清楚地了解何时出现了问题,从而进行适当的处理。

字符串操作:Go语言提供了对字符串的各种操作方法,包括索引、切片和连接等。这些操作使得对字符串的处理更加灵活,让我们能够轻松地获取、修改和拼接字符串。

字符串格式化:字符串格式化是将数据转换为特定格式的字符串,类似于C语言的格式化输出。Go使用fmt.Sprintf函数来实现字符串格式化,它使得构建复杂的字符串变得更加容易。

JSON处理 (序列化,反序列化) :Go语言内置了对JSON的支持,可以方便地将结构体序列化为JSON格式,也可以将JSON数据反序列化为结构体。这是在不同应用之间传递数据的常见方式之一。

时间处理:Go的时间包提供了处理时间和日期的丰富功能,包括获取当前时间、格式化时间、时间运算等。这些功能有助于在程序中处理时间相关的任务。

字符串和数字之间的转换:在处理字符串和数字之间的转换时,strconv包是一个不可或缺的工具。它允许我们将字符串转换为数字,以及将数字转换为字符串,以满足不同场景的需要。

进程信息:Go语言的os包和os/exec包提供了获取和执行进程信息的方法。通过这些包,我们可以获取当前进程的信息,以及在Go程序中执行外部命令并获取输出。

通过本次学习,我学到了更多的Go的知识,相信之后会运用的更好。