一,开始
二,类型
三,变量
四,控制结构
五,数组,切片(slice)和字典(maps)
六,函数
七,结构和接口
八,包
九,测试
十,并发
十一,下一步
第 6 章,函数 43页
函数通常表示为一个黑盒子
func average(xs []float64) float64 {
panic("not implemented")
}
函数参数是一个数组,返回一个浮点64 数。
func average(xs []float64) float64 {
total := 0.0
for _, v := range xs {
total += v
}
return total / float64( len(xs) )
}
func main() {
xs := []float64{98, 93, 77, 82, 83}
fmt.Println( average(xs) )
}
可变个数参数函数。
func add(args ...int) int {
total := 0
for _, v := range args {
total += v
}
return total
}
结束 closure
递归 recursion
func factorial(x uint) uint {
if x == 0 {
return 1
}
return x * factorial(x-1)
}
if x == 0 {
return 1
}
return x * factorial(x-1)
}
defer, panic and recover
func main() {
defer second() //延迟执行
first()
}
defer second() //延迟执行
first()
}
* 和 & 操作
&引用变量地址,*指向变量地址(指针)
new 对象实例化
第7章,结构和接口 55页
结构
type Circle struct {
x float64
y float64
r float64
}
或
type Circle struct {
x, y, r float64
}
初始化
var c Circle
c := new(Circle)
c := Circle{x: 0, y: 0, r: 5}
c := Circle{0, 0, 5}
c := &Circle{0, 0, 5}
结构元素的引用
c.x , c.y
方法:
func (c *Circle) area() float64 {
return math.Pi * c.r * c.r
}
接口 59页
包 63页
import "fmt"
import (
"fmt"
"math"
)
"strings"
strings.Contains("test", "es")
// true
strings.Count("test", "t")
// 2
输入、输出 67页
文件和文件夹
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
// handle the error here
return
}
defer file.Close()
// get the file size
stat, err := file.Stat()
if err != nil {
return
}
// read the file
bs := make([]byte, stat.Size())
_, err = file.Read(bs)
if err != nil {
return
}
str := string(bs)
fmt.Println(str)
}
import (
"fmt"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
// handle the error here
return
}
defer file.Close()
// get the file size
stat, err := file.Stat()
if err != nil {
return
}
// read the file
bs := make([]byte, stat.Size())
_, err = file.Read(bs)
if err != nil {
return
}
str := string(bs)
fmt.Println(str)
}
错误 70页
package main
import "errors"
func main() {
err := errors.New("error message")
}
import "errors"
func main() {
err := errors.New("error message")
}
排序
链表 71页
哈希和加密 73页
服务 servers, tcp 75页
http 77页
rpc 78页
文档化 81 页
第9章 测试 83页
第10章,并发 87页
channels 89页
第11章,下一步
golang.org/src/pkg/io/ioutil/ioutil.go
网站打不开,被墙了。
有疑问加站长微信联系(非本文作者)