Go的库文件

标准库

archive/tar 和 /zip-compress:压缩(解压缩)文件功能。
fmt-io-bufio-path/filepath-flag:
fmt: 提供了格式化输入输出功能。
io: 提供了基本输入输出功能,大多数是围绕系统功能的封装。
bufio: 缓冲输入输出功能的封装。
path/filepath: 用来操作在当前系统中的目标文件名路径。
flag: 对命令行参数的操作。  
strings-strconv-unicode-regexp-bytes:
strings: 提供对字符串的操作。
strconv: 提供将字符串转换为基础类型的功能。
unicode: 为 unicode 型的字符串提供特殊的功能。
regexp: 正则表达式功能。
bytes: 提供对字符型分片的操作。
index/suffixarray: 子字符串快速查询。
math-math/cmath-math/big-math/rand-sort:
math: 基本的数学函数。
math/cmath: 对复数的操作。
math/rand: 伪随机数生成。
sort: 为数组排序和自定义集合。
math/big: 大数的实现和计算。   
container-/list-ring-heap: 实现对集合的操作。
list: 双链表。
ring: 环形链表。
time-log:
time: 日期和时间的基本操作。
log: 记录程序运行时产生的日志,我们将在后面的章节使用它。
encoding/json-encoding/xml-text/template:
encoding/json: 读取并解码和写入并编码 JSON 数据。
encoding/xml: 简单的 XML1.0 解析器,有关 JSON 和 XML 的实例请查阅第 12.9/10 章节。
text/template:生成像 HTML 一样的数据与文本混合的数据驱动模板(参见第 15.7 节)。
net-net/http-html:(参见第 15 章)
net: 网络数据的基本操作。
http: 提供了一个可扩展的 HTTP 服务器和基础客户端,解析 HTTP 请求和回复。
html: HTML5 解析器。
runtime: Go 程序运行时的交互操作,例如垃圾回收和协程创建。
reflect: 实现通过程序运行时反射,让程序操作任意类型的变量。

练习 9.1 Q20_linked_list.go

使用 container/list 包实现一个双向链表,将 101、102 和 103 放入其中并打印出来。

package main

import (
	"container/list"
	"fmt"
)

func main() {
	a := [3]int{101, 102, 103}
	s := list.New()
	for i := 0; i < len(a); i++ {
		s.PushBack(a[i])
	}
	for e := s.Front(); e != nil; e = e.Next() {
		fmt.Print(e.Value, "\n")
	}
}

"container/list"介绍

练习 9.2 size_int.go

通过使用 unsafe 包中的方法来测试你电脑上一个整型变量占用多少个字节。

package main

import (
	"fmt"
	"unsafe"
)

func main() {
	var a int = 10
	res := unsafe.Sizeof(a)
	fmt.Print(res)
}

结果:
在这里插入图片描述

自定义包

练习 9.3 main_greetings.go

创建一个程序 main_greetings.go 能够和用户说 “Good Day” 或者 “Good Night”。不同的问候应该放到单独的 greetings 包中。

在同一个包中创建一个 IsAM 函数返回一个布尔值用来判断当前时间是 AM 还是 PM,同样创建 IsAfternoon 和 IsEvening 函数。

使用 main_greetings 作出合适的问候(提示:使用 time 包)。
包结构:
在这里插入图片描述

package greeting

import "fmt"

func SayAfternoon() {
	fmt.Print("good afternoon\n")
}
package greeting

import "fmt"

func SayEvening() {
	fmt.Print("good evening\n")
}
package greeting

import "fmt"

func SayMorning() {
	fmt.Print("good morning\n")
}
package main

import (
	"awesomeProject/greeting"
	"fmt"
	"time"
)

func main() {
	t := time.Now()
	fmt.Print(t, "\n")
	flag := greeting.Whattime()
	if flag == 0 {
		greeting.SayMorning()
	} else if flag == 1 {
		greeting.SayAfternoon()
	} else {
		greeting.SayEvening()
	}
}

结果:
在这里插入图片描述

练习 9.4

创建一个程序 main_oddven.go 判断前 100 个整数是不是偶数,将判断所用的函数编写在 even 包里。

package even

func Pan100() []int {
	sl := make([]int, 0, 100)
	for i := 0; i <= 100; i++ {
		if i%2 == 0 {
			sl = append(sl, i)
		}
	}
	return sl
}
package main

import (
	"awesomeProject/even"
	"fmt"
)

func main() {
	sl := even.Pan100()
	fmt.Print(sl)
}

在这里插入图片描述

练习 9.5 使用第 6.6 节的斐波那契程序:

1)将斐波那契功能放入自己的 fibo 包中并通过主程序调用它,存储最后输入的值在函数的全局变量。

2)扩展 fibo 包将通过调用斐波那契的时候,操作也作为一个参数。实验 “+” 和 “*”

main_fibo.go / fibonacci.go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值