您的位置:首页 > 编程语言 > Go语言

读《Introducing Go》O'Reilly 第 6 ~ 11 章

2016-03-16 17:01 465 查看
一,开始
二,类型
三,变量
四,控制结构
五,数组,切片(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)

}

defer, panic and recover

func main() {

  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页

http://www.cnblogs.com/hustcat/p/4007126.html

包 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)

}

错误 70页

package main

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

网站打不开,被墙了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: