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

wide288 · · 1688 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一,开始
二,类型
三,变量
四,控制结构
五,数组,切片(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页

 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
网站打不开,被墙了。

有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:wide288

查看原文:读《Introducing Go》O'Reilly 第 6 ~ 11 章

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1688 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传