package main import "fmt" func fn_test_panic() (a int) { a = 2 panic("This is panic") return a } func fn1() (a int) { a = 3 defer func(){ if p := recover(); p != nil { fmt.Println("recover") } }() fmt.Println("befor call
1.编译器protoc, 下载地址:https://github.com/protocolbuffers/protobuf/releases (下载对应的版本, 解压后放到go的bin中) 2.安装golang扩展, go get -u github.com/golang/protobuf/protoc-gen-go 3.grpc库, go get google.golang.org/gprc 4.编写DIL文件 syntax = "proto3"; package hellowor
不可或缺的函数,在Go中定义函数的方式如下: func (p myType ) funcName ( a, b int , c string ) ( r , s int ) { return } 通过函数定义,我们可以看到Go中函数和其他语言中的共性和特性 共性 关键字——func 方法名——funcName 入参——— a,b int,b string 返回值—— r,s int 函数体—— {} 特性 Go中函数的特性是非常酷的,给我们带来不一样的编程体验. 为特定类型定义函数,即为类型对象
1. 结构体做函数的参数或返回值时,都会被重新拷贝一份如果不想拷贝,可以传递结构体指针 package main import "fmt" type Person struct { name string age int } var p = Person{"武沛齐", 18} func doSomething() Person { // 结构体做函数的参数或返回值时,都会被重新拷贝一份,如果不想拷贝,可以传递结构体指针 return p } func main()
type tt struct{ aa int bb int cc int str string } func func_rstruct () tt{ t:=tt{1,2,3,"88888888888"} return t } func func_rpstruct () *tt{ t:=tt{1,2,3,"88888888888"} return &t } func Benchmark_rstruct(t *testing.B) { strs:=[CNT]st