Go语言基础7 | 青训营笔记

54 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第7天

基础语法

字符串操作

在标准库的strings包里有很多的字符串工具函数。 例如Contains,判断一个字符串中是否包含另一个字符串。Count,字符串计数。Index,查找某个字符串的位置。Join,连接多个字符串。Repeat,重复多个字符串。len函数去获取字符串的长度,注意一个中文会对应多个字符。

package main

import (
    "fmt"
    "strings"
)

func main() {
    a := "hello"
    fmt.Println(strings.Contains(a, "ll"))               // true
    fmt.Println(strings.Count(a, "l"))                   // 2
    fmt.Println(strings.HasPrefix(a, "he"))              // true
    fmt.Println(strings.HasSuffix(a, "llo"))             // true
    fmt.Println(strings.Index(a, "ll"))                  // 2
    fmt.Println(strings.Join([]string{"he", "llo"}, "-") // he-llo
    fmt.Println(strings.Repeat(a, 2))                    // hellohello
    fmt.Println(strings.Replace(a, "e", "E", -1))        // hEllo
    fmt.Println(strings.Split("a-b-c", "-"))             // [a b c]
    fmt.Println(strings.ToLower(a))                      // hello
    fmt.Println(strings.ToUpper(a))                      // HELLO
    fmt.Println(len(a))                                  // 5
    b := "你好"
    fmt.Println(len(b)) // 6
}

字符串格式化

在标准库的fmt包里面,有非常多的字符串格式化相关的方法. 最常见的就是fmt.Println,打印多个变量并且换行。fmt.Printf,这个很类似于C语言中的printf函数。不同的是在Golang里面,你可以很轻松地用%v来打印任何类型的变量,而不用区分数字用%d、字符串用%s。你可以用%+v来得到更加详细的结构。用%#v,则会进一步详细。结构体用%v会打印出值,用%+v会打印出字段的名字和值,用%#v会打印出结构体的整个构造的名称,还有它的字段名字和值。你可以用%.2f这种方式来去打印出一个保留两位小数的浮点数。

package main

import "fmt"

type point struct {
    x, y, int
}

func main() {
    s := "hello"
    n := 123
    p := point{1, 2}
    fmt.Println(s, n) // hello 123
    fmt.Println(p)    // {1 2}
    
    fmt.Printf("s=%v\n", s)  // s=hello
    fmt.Printf("n=%v\n", n)  // n=123
    fmt.Printf("p=%v\n", p)  // p={1 2}
    fmt.Printf("p=%+v\n", p) // p={x:1 y:2}
    fmt.Printf("p=%#v\n", p) // p=main.point{x:1, y:2}
    
    f := 3.141592653
    fmt.Println(f)            // 3.141592653
    fmt.Printf("%.2lf\n", f)  // 3.14
}