04 2021 档案
摘要:ioc 控制反转 di 依赖注入 是一种设计思想 ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部之间控制 ioc 容器来控制对象的创建 , 容器来帮忙创建及注入依赖的对象 传统设计如图 ioc 的重点是在系统运行中 动态的向某个对象提供他所需要的其他对象 这一点事通过依赖注入来
阅读全文
摘要:socket编程 Dial函数 net.Dial() func Dial(network,addresss string) (Conn, error){ var d Dialer return d.Dial(network,address) } //tcp连接 conn,err := net.Dia
阅读全文
摘要:协程间通信 2中方式 共享内存 和 消息传递 package main import ( "fmt" "runtime" "sync" ) var counter int = 0 func add(a,b int, lock *sync.Mutex) { c : = a + b lock.Lock(
阅读全文
摘要:go错误处理为 error接口 type error interface { Error() string } 常用用法 将错误作为第二个参数返回 例子 func Foo(params int) (n int , err error){ // } n,err := Foo(100) if err !
阅读全文
摘要:类型断言 .(type) 来实现 其中 type 对应的就是要断言的类型 接口类型断言 var num1 Number = 1 var num2 Number2 = &num1 if num3,ok := num2.(Number1);ok { fmt.Println(num3.Equal(1))
阅读全文
摘要:类属性和成员方法可见性 不管是变量、函数,还是自定义类的属性和成员方法,它们的可见性都是根据其首字母的大小写来决定的,如果变量名、属性名、函数名或方法名首字母大写,就可以在包外直接访问这些变量、属性、函数和方法,否则只能在包内访问,因此 Go 语言类属性和成员方法的可见性都是包一级的 通过首字母大小
阅读全文
摘要:go的数组长度是不可变的 数组长度是数组内置的一个常量 无法对数组做增删操作 go语言提供了切片 支持动态增删操作 1 切片的定义 切片字面量中只有元素类型 没有长度 var slice []string = []string{"a","b","c"} 创建切片方法 三种 基于数组 基于切片 和直接
阅读全文
摘要:字典 存储键值对映射关系的集合 go map也是一个无序集合 var testMap map[string]int testMap = map[string]int{ "one":1, "two":2, "three":3 } k :="two" v,ok := testMap[k] if ok {
阅读全文
摘要:类的定义 借助结构体实现 关键字 type type Student struct { id uint name string male bool score float64 } go 没有构造函数 析构函数 取而代之的是 NewXxx这样的全局函数(首字母大写) 作为类的初始化函数 func Ne
阅读全文
摘要:1 集中式 2 功能式 我们公司目前使用 master (主 用于部署线上) dev(开发/测试) 3 pull request 工作流 gitlab演示 setting->repository->protocted 4 gitflow 工作流 大型项目使用 master hotfix 直接从mas
阅读全文