Categorygithub.com/CoderSamYhc/learngo
modulepackage
0.0.0-20230423094014-3177a7b084b1
Repository: https://github.com/codersamyhc/learngo.git
Documentation: pkg.go.dev

# README

LEARN-GO


go学习计划

DAY1

  • 指针
    • 值传递:copy 值,函数内部修改不会影响外部
    • 引用传递:传递值的地址,函数内修改会影响外部
  • 数组
    • 1、数组是值类型,调用函数是值传递;可以传指针数组,但一般不会这样使用,会使用切片
    • 2、[]int 这是切片 [1]int 这是数组
    • 3、函数传参定义[5]int 外部定义[...]int的值也必须是5个
    • 4、[5]int 和 [10]int 是不同的类型
  • 切片
    • 1、左开右闭 指定的最大索引不包含在结果集内
    • 2、切片是数组的一个视图,即切片是引用传递,函数内对其某个索引的值进行修改,会影响外部的值
    • 3、切片包含 ptr、len、cap;len包含ptr,cap包含len和ptr
    • 4、切片可以向后扩展,不可以向前扩展;s[i]不可以超越len(s),向后扩展不可以超越底层数组的cap(s)
    • 5、添加元素超过底层数组的cap(s)时,底层会开辟一个新的cap更大的新数组
  • 切片拓展
    • 1、空切片实际是nil;zero value for slice is nil;
  • Map
    • 1、key不存在时,获取value类型的初始值
    • 2、除了map、slice、function,其他内建类型都可以作为key,struct 不包含map、slice、function也可以作为key
    • 3、当使用float作为map的key时,由于float精度问题,会出现获取不到float key 对应 value 的情况,所以应该慎用 float 作为 key
  • Map例题

DAY2

    • 初始化顺序:main->import pkg->const->var->init() 返回main->const->var->init()->mian()
  • 接口
  • 接口拓展

DAY3

  • goroutine
  • 管道
    • 1、对于关闭管道,向已关闭的管道发送数据会报panic,从已关闭的管道接收数据,返回已缓冲的数据或零值
    • 2、无论收发,nil管道都会阻塞
    • 3、重复关闭管道或关闭nil管道会引发panic
    • 4、单向管道不能逆向操作,也不能转换
    • 5、接收管道不能close

DAY4

  • 性能测试
    • -benchmem(性能测试的时候显示测试函数的内存分配的统计信息,等价于在基准测试中调用b.ReportAllocs())
    • -count=n(运行多少次,默认1次)
    • -timeout=t(超时时间,超过会panic,默认10分钟)
    • -cpu=x,y(指定GOMAXPROCS,可以通过,传入一个列表)
    • -benchtime=ns(指定执行时间(e.g. 2s)或具体次数(e.g. 10x))
    • -cpuprofile=filename.out(输出cpu性能文件)
    • -memprofile=filename.out(输出mem内存性能文件)
    • bench_test
    • BenchmarkFf-2(BenchmarkFf表示测试函数名 -2表示线程数)
    • 2794164(执行总次数)
    • 1279 ns/op(表示平均每次操作花费了1222纳秒)
    • 392 B/op(表示每次操作申请了392Byte的内存申请)
    • 21 allocs/op(表示每次操作申请了21次内存)

DAY5

  • go和protobuf
  • go和grpc

DAY6

  • go和rpc

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author