Go

练习 切片

练习 切片 问题 实现 Pic。它应当返回一个长度为 dy 的切片,其中每个元素是一个长度为 dx,元素类型为 uint8 的切片。当你运行此程序时,它会将每个整数解释

练习 循环与函数

练习 循环与函数 问题 为了练习函数与循环,我们来实现一个平方根函数:用牛顿法实现平方根函数。 计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z

并发-学习Go语言

阅读笔记 goroutines.go package main import ( "fmt" "time" ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") say("hello") } 笔记 Go 程(goroutine)是由 Go 运行时管理的轻量级线程。 go f(x,

接口-学习Go语言

阅读笔记 interfaces.go package main import ( "fmt" "math" ) type Abser interface { Abs() float64 } func main() { var a Abser f := MyFloat(-math.Sqrt2) v := Vertex{3, 4} a = f // a MyFloat 实现了 Abser a = &v // a *Vertex 实现了 Abser // 下面一行,v 是一个 Vertex(而

方法-学习Go语言

阅读笔记 methods.go package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v := Vertex{3, 4} fmt.Println(v.Abs()) } 笔记 Go 没有类。不过你可以为结构体类型定义方法。 方法就是一类带

映射-学习Go语言

阅读笔记 maps.go package main import "fmt" type Vertex struct { Lat, Long float64 } var m map[string]Vertex func main() { m = make(map[string]Vertex) m["Bell Labs"] = Vertex{ 40.68433, -74.39967, } fmt.Println(m["Bell Labs"]) } 笔记 make 函数会返回给定类型的映射,并将其初始化备用。 m就是映射了,将k

切片-学习Go语言

阅读笔记 slices.go package main import "fmt" func main() { primes := [6]int{2, 3, 5, 7, 11, 13} var s []int = primes[1:4] fmt.Println(s) } 笔记 切片的内部实现,类似一个链表+头尾指针。 数组的切片范围为low<= x < high slices-pointers.go package

结构体-学习Go语言

阅读笔记 pointers.go package main import "fmt" func main() { i, j := 42, 2701 p := &i // point to i fmt.Println(*p) // read i through the pointer *p = 21 // set i through the pointer fmt.Println(i) // see the new value of i p = &j // point to j *p = *p / 37 // divide j through the pointer fmt.Println(j) // see the

控制流程-学习Go语言

阅读笔记 if-with-a-short-statement.go package main import ( "fmt" "math" ) func pow(x, n, lim float64) float64 { if v := math.Pow(x, n); v < lim { return v } return lim } func main() { fmt.Println( pow(3, 2, 10), pow(3, 3, 20), ) } 笔记 同 for 一样, if 语句可以在条件表达式前执行一个简

函数值-学习Go语言

阅读笔记 functions-values.go package main import ( "fmt" "math" ) func compute(fn func(float64, float64) float64) float64 { return fn(3, 4) } func main() { hypot := func(x, y float64) float64 { return math.Sqrt(x*x + y*y) } fmt.Println(hypot(5, 12)) fmt.Println(compute(hypot)) fmt.Println(compute(math.Pow)) } 笔记 函数也是值。它们可以像其它值一样传递。 函数值可以用