golang学习笔记
go官方学习内容是最好最权威的入门go语言的资料,为学习go语言指明一个正确的方向。
golang知识点
下面内容部分引用 A Tour of go 官方介绍文档
go打开本地文档方法:
本地文档浏览 web 服务器。在命令行输入 godoc -http=:6060
,然后使用浏览器打开 http://localhost:6060 后,你就可以看到本地文档浏览服务器提供的页面。
fmt 打印占位符特殊作用
%q 带着双引号打印字符串
var s string = "aaa"
fmt.Printf("%q\n", s) // "aaa"
fmt.Printf("%s\n", s) // aaa
%T 打印变量类型,不能用 %t
v := 42
fmt.Printf("v is of type %T\n", v) // v is of type int
slice本质
切片就像数组的引用
切片并不存储任何数据,它只是描述了底层数组中的一段。
更改切片的元素会修改其底层数组中对应的元素。
与它共享底层数组的切片都会观测到这些修改。
strings包
strings.Join(s1 []string, sep string):用sep把s1中的所有元素链接起来
ss := []string{"a", "b", "c"}
fmt.Printf("%s\n", strings.Join(ss, "_")) // a_b_c
Stringer Interface
Stringer
fmt 包中定义的 Stringer 是最普遍的接口之一。
type Stringer interface {
String() string
}
Stringer 是一个可以用字符串描述自己的类型。fmt 包(还有很多包)都通过此接口来打印值。
type Person struct {
Name string
Age int
}
// 转换成string,用于描述Person结构体
func (p Person) String() string {
return fmt.Sprintf("%v (%v years)", p.Name, p.Age)
}
func main() {
a := Person{"Arthur Dent", 42}
z := Person{"Zaphod Beeblebrox", 9001}
fmt.Println(a, z)
}