Go:init()

Go:init()

init()

init()函数特性

  • init()在main包执行之前
  • init()自动执行,不能显示调用
  • 同一个Go文件中可定义多个init()函数,顺序执行
  • 同一个package中不同文件,将文件名按字符串进行字母和数字自然排序,之后顺序调用各文件中的init()
Read more
Go:interface

Go:interface

interface 接口

go:interface{}、断言与类型转换

  • Go的接口更大的作用是声明方法集合,而非类型约束。
  • interface{}可用于向函数传递任意类型的变量,但对于函数内部,该变量仍然为interface{}类型(空接口类型),故必须进行类型断言确认类型后检查才能使用(不能直接隐式转换)。
  • 接口类型向普通类型的转换称为类型断言(运行期确定)。
Read more
Go:chain operation

Go:chain operation

chain operation

链式调用注意事项

  • 本身为较宽泛的概念
  • 链式调用的场景:
    • 返回值是一个函数或方法(很少有实际意义);
    • 方法链(func chain或method chain):返回值是一个对象时,可以直接调用对象绑定的方法;
  • 链式调用方法链是包含关系,严格意义上说,链式调用​ 方法链;
Read more
Go:goroutine

Go:goroutine

goroutine

Golang不使用OS层process而使用语言层面(Goroutine)处理 并发 & 并行 Task任务方案(针对业务来说)的个人思考和实践思路随想 —Jaco Liu 秋

1.使用OS层面进程管理,虽然成本低廉快捷,但对CPU的性能开销比较大,Golang通过Goroutine的引入,构建一种SandBox沙箱容器式的方案,可以将并发处理任务放在语言层面内部,“隔离“在系统层面之上,构建Goroutine池的同时,也能保证在性能可靠的前提下,安全性也增强。  
目前大规模分布式系统的整体方向,大部分也都是建立在OS系统层之上(而非系统层面)以达到可控的标准控制,将OS系统级内核CPU的开销降到最低保证OS层流畅运行,这也让Linux为代表的服务器OS系统更“专注”做Base底层基础性的业务支撑。

Read more
Go:方法值(func value) 和 方法表达式(func expression)
Go:func 函数

Go:func 函数

func 函数

func函数(适用于method)小结

Go函数

数也是一种类型,可以和其他类型一样被保存在变量中。和接口一样,接口也是一种类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
package main
import (
"fmt"
)
func foo() {
fmt.Println("foo")
}
func main() {
var f func()
f = foo
f()
}

Read more
Go tool pprof性能监控调试工具基本使用说明

Go tool pprof性能监控调试工具基本使用说明

Go tool pprof使用方式

go中有pprof包来做代码的性能监控主要涉及两个pkg:

1
2
3
4
5
6
7
8
9
10
11
#web服务器:
import (
"net/http"
_ "net/http/pprof"
)

#一般应用程序(实际应用无web交互)
import (
"net/http"
_ "runtime/pprof"
)
Read more
Go:fmt.Printf() 格式化占位符
Jaco Liu Golang personal summary combing notes
travel hanghzou 2019.05.19

travel hanghzou 2019.05.19


杭城自旅小记 — 秋 Jaco Liu

2019.05.19
己亥夏初余足行,时节竹帘壁岭顷。
雾引青峦过龙井,偶有惊雀嬉零星。
曲径邻岩苔缕兴,十里山茶步履轻。
云栖闻泉鸟争鸣,竹径临溪沥雨惊。
少时暂驻净思省,沐风携雨心亦明。
Read more