Go 基础总结


原文链接: Go 基础总结

strings — 字符串操作 · Go语言标准库

go lib

keysonZZZ/kgo: go library

golang 位操作

10000010 [A]
00000010 [B]
11111101 (NOT B)
00000010 ^ 11111111 = 11111101 [B XOR 0xff]
10000010 ^ 00000010 = 10000000 [A XOR B]
10000010 & 00000010 = 00000010 [A AND B]
10000010 &^00000010 = 10000000 [A 'AND NOT' B]
10000010&(^00000010)= 10000000 [A AND (NOT B)]

创建struct的几种方式

  1. new()
    这是一个用来分配内存的内置函数,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配的 t 类型的零值的指针。
    func new(t Type) *Type

  2. strut{}
    直接使用struct{} 来初始化strut时,返回的是一个struct类型的值,而不是指针两者是不一样的

//定义一个struct
type Student struct {
	id      int
	name    string
	address string
	age     int
}

//使用new创建一个Student对象,结果为指针类型
var s *Student = new(Student)
var s1 = new(Student)
var s2 =&Student{}
//使用T{...}创建struct,结果为value类型
var s3 Student = Student{103, "Smith", "Heping Road", 20}
	
tests := []struct {
        name    string
        args    args
        wantErr bool
    }{
        {
            name: "提交订单",
            args: args{
                order: order,
            },
            wantErr: false,
        },
    }

Google编译时依赖注入框架 wire

依赖注入: 用于解耦依赖关系;DDD:业务决定技术实现 -> 稳定易拓展的系统应该让底层依赖高层,而不是相反(高层依赖底层),一个合理的系统,应该由高层按照自己的需求,指定底层应该满足的
控制反转: 是当系统的很多东西都能够模版化的时候,如Template Method这个设计模式也体现了控制反转,父类实现一些框架方法并定义控制流如何走,控制流会按照定义好的顺序调用一些abstract方法,然后留给子类去实现这些abstract方法。
go get github.com/google/wire/cmd/wire

`