Golang相关:[审稿进度80%]Go语法、Go并发思想、Go与web开发、Go微服务设施等
MIT License
3977
163
795

1.2 时间格式化与解析

nowTime := time.Now()
stringTime := nowTime.Format("2006年1月2日 15:04:05")
fmt.Println(stringTime) // 2019年01月01日 13:55:30

//正确的备注应该是 // 2019年1月1日 13:55:30

image

image

原文的代码示例编译和判断逻辑有问题

userFile := "test.txt"
fl, err := os.Open(userFile)		
if err != nil {
	fmt.Println(userFile, err)
	return
}

defer fl.Close()

reader := bufio.NewReader(file)
for {
	str, err := reader.ReadString("\n")		//读到换行就结束一次
	if err != io.EOF {						//io.EOF表示问价末尾
		break
	}
	//输出内容
	fmt.Print(str)
}

经过测试,实际应该为:

reader := bufio.NewReader(fl)        //入参应该是os.Open返回的fl
for {
	str, err := reader.ReadString(byte('\n'))       //ReadString方法入参是byte
	if err == io.EOF {                        //err == EOF才break,否则读完文件第一行就break了

使用+能够连接字符串。但是该操作并不高效(因为字符串在Go中是基本类型,每次拼接都是拷贝了内存!)。Go1.10提供了类似Java的StringBuilder机制来进行高效字符串连接;
叙述没问题;
但是代码里面写成了
var stringBuilder strings.Buffer
应该是
var stringBuilder strings.Builder

01-基础语法/10-函数-1-函数简介.md#三-两个特殊函数:init 函数

每一个文件有且仅有一个init函数

这里是我理解错了么,并没有个数限制吧。

3.3 字符串连接

//创建字节缓冲
var stringBuilder bytes.Buffer

这里是不是应该改成
var stringBuilder strings.Builder

四 strings包相关函数
//字符串str按照s分割,返回切片
Splite(str,s string)[]string

strings 没有这个方法 应该是Split

over-golang/02-并发编程/02-channel.md
带缓冲通道被填满时,尝试再次发送数据会发生阻塞
带缓冲通道为空时,尝试接收数据会发生阻塞
带->当

是不是图都丢了

Hi, 最近开发了一个 GitHub 的微信小程序,可以方便的在手机上查看 GitHub 的相关内容,扫描下方二维码就可以方便查看这个教程~
qrcode

小程序是开源的,有任何问题和意见可以直接提 Issue 反馈:GitHub Trending Hub

for i := 0; i < 1000000000; i++{
    obj := make([]byte,1024)
    _ = obj
 }

for i := 0; i < 1000000000; i++{
    obj := bytePool.Get().(*[]byte)
    _ = obj
    bytePool.Put(obj)
  }

这里只是新建对象,不能这样对比,跑的结果是 without pool 0s with pool 24s

看的过程中发现了一些错别字:

  1. Golang/02-Go并发编程/00-并发简略3-多线程编程.md:
    “线程自己私有的数据都存储在线程栈中,咸成展位于所属进程的虚拟内存地址中”,应为“线程
    栈”

https://github.com/overnote/over-golang/blob/47551ced330d365d01a4f9a413a56c4ab962b5b3/01-%E5%9F%BA%E7%A1%80%E8%AF%AD%E6%B3%95/09-%E5%BC%95%E7%94%A8%E7%B1%BB%E5%9E%8B-1-%E5%88%87%E7%89%87.md

slice1 := make([]int,5)		//	创建初始值为0,个数为5的切片
slice2 := make([]int,5,10)	//创建初始值为10,个数为5的切片
slice3 := []int{1,2,3,4,5}   	//创建并初始化

应该改为

slice1 := make([]int,5)		//创建长度为5,容量为5的切片
slice2 := make([]int,5,10)	//创建长度为5,容量为10的切片
slice3 := []int{1,2,3,4,5}	        //创建并初始化

unbelievable,牛逼

您好,非常感谢提供这么好的笔记。在学习过程中发现笔记里面的代码片段报错,看似合理的写法却编译不通过。

位置:
02-GO语法 里的 4.5 关键字iota 中的:

const (
    g = iota    	        //0
    h,i,j = iota,iota,iota 	       
    k 				        // 2
)

这里的k出错了,但是没有h,i,j = iota,iota,iota 这一行的话就没有问题。

docsify搞起 xD