Go基础语法宝典定义了一个struct:Box,含有三个长宽高字段和一个颜色属性 定义了一个slice:BoxList,含有Box 然后以上面的自定义类型为接收者定义了一些method Volume()定义了接收者为Box,返回Box的容量 SetColor(c Color),把Box的颜色改为c BiggestColor()定在在BoxList上面,返回list里面容量最大的颜色 PaintItBlack()把Box PaintItBlack()把BoxList里面所有Box的颜色全部变成黑色 String()定义在Color上面,返回Color的具体颜色(字符串格式) 上面的代码通过文字描述出来之后是不是很简单?一般解决问题都是通过问题的描述,去写相应的代码 实现。 指针作为receiver 现在让回过头来看看SetColor这个method,它的receiver是一个指向Box的指针,可以使用*Box。 定义SetColor的 定义SetColor的真正目的是想改变这个Box的颜色,如果不传Box的指针,那么SetColor接受的其实是 Box的一个copy,也就是说method内对于颜色值的修改,其实只作用于Box的copy,而不是真正的 Box。所以需要传入指针。 这里可以把receiver当作method的第一个参数来看,然后结合前面函数讲解的传值和传引用就不难理解 for i := range bl {0 码力 | 47 页 | 1020.34 KB | 1 年前3
Go Web编程和一个颜色属性 定义了一个slice:BoxList,含有Box 然后以上面的自定义类型为接收者定义了一些method Volume()定义了接收者为Box,返回Box的容量 SetColor(c Color),把Box的颜色改为c BiggestsColor()定在在BoxList上面,返回list里面容量最大的颜色 PaintItBlack()把BoxList里面所有Box的颜色全部变成黑色 成黑色 String()定义在Color上面,返回Color的具体颜色(字符串格式) 上面的代码通过文字描述出来之后是不是很简单?我们一般解决问题都是通过问题的描述,去写相应的代码实现。 指针作为receiver 指针作为receiver 现在让我们回过头来看看SetColor这个method,它的receiver是一个指向Box的指针,是的,你可以使用*Box。想想 为啥要使用指针而不是Box本身呢? 为啥要使用指针而不是Box本身呢? 我们定义SetColor的真正目的是想改变这个Box的颜色,如果不传Box的指针,那么SetColor接受的其实是Box的一个 copy,也就是说method内对于颜色值的修改,其实只作用于Box的copy,而不是真正的Box。所以我们需要传入指针。 这里可以把receiver当作method的第一个参数来看,然后结合前面函数讲解的传值和传引用就不难理解 这里你也许0 码力 | 295 页 | 5.91 MB | 1 年前3
Hello 算法 1.0.0b4 Golang版个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选0 码力 | 347 页 | 27.40 MB | 1 年前3
Hello 算法 1.1.0 Go版个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选0 码力 | 383 页 | 18.48 MB | 1 年前3
Hello 算法 1.0.0 Golang版的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 第 13 章 回溯 hello‑algo.com 287 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选0 码力 | 382 页 | 17.60 MB | 1 年前3
Hello 算法 1.0.0b5 Golang版个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选0 码力 | 379 页 | 30.70 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Go 版个皇后,使得它们互不攻击。 ‧ 数独:在 9 × 9 的网格中填入数字 1 ~ 9 ,使得每行、每列和每个 3 × 3 子网格中的数字不重复。 ‧ 图着色问题:给定一个无向图,用最少的颜色给图的每个顶点着色,使得相邻顶点颜色不同。 组合优化问题:这类问题的目标是在一个组合空间中找到满足某些条件的最优解。 ‧ 0‑1 背包问题:给定一组物品和一个背包,每个物品有一定的价值和重量,要求在背包容量限制内,选0 码力 | 384 页 | 18.49 MB | 10 月前3
Golang 101(Go语言101 中文版) v1.21.aEncodeRune(bs[n:], r) 16 | } 17 | return bs 18 | } 19 | 20 | func main() { 21 | s := "颜色感染是一个有趣的游戏。" 22 | bs := []byte(s) // string -> []byte 23 | s = string(bs) // []byte -> string0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.ar := range rs { n += utf8.EncodeRune(bs[n:], r) } return bs } func main() { s := "颜色感染是一个有趣的游戏。" bs := []byte(s) // string -> []byte s = string(bs) // []byte -> string rs :=0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.aEncodeRune(bs[n:], r) 16| } 17| return bs 18| } 19| 20| func main() { 21| s := "颜色感染是一个有趣的游戏。" 22| bs := []byte(s) // string -> []byte 23| s = string(bs) // []byte -> string0 码力 | 591 页 | 21.40 MB | 1 年前3
共 10 条
- 1













