golang Golang 字符串是否存在于数组中 基本原理,使用 sort 库,先对数组排序,再二分搜索进行确认。 func assert(actual, expect bool, t *testing.T) { if actual != expect { t.Fatalf("Expect %v, but got %v", expect, actual) } } func TestSearchInArray(t *testing.T) { assert(In(
golang Golang SHA256 及将哈希值转化为字符串 Golang 做 SHA256 哈希,以及将哈希值转化为字符串,如下: import ( "crypto/sha256" "fmt" "testing" ) func TestSHA256(t *testing.T) { b := sha256.Sum256([]byte("Hello world")) // 转化为字符串 s := fmt.Sprintf("%x", b) fmt.Println(s) }
golang Golang Hex 字符串转 big.Int 如下,先创建一个 big.Int,再设置其值为16进制的字符串: package main import ( "fmt" "math/big" ) func main() { s := "a" i := new(big.Int) i.SetString(s, 16) fmt.Println(i) // 10 } 请注意,十六进制字符串不要以 0x 开头。
golang Golang regexp 不匹配换行符 碰到这个问题,应该是使用了 . 点操作符,按正则表达式规则应该匹配所有字符,但实际上却没有匹配换行符。这是因为在 golang 里 . 默认不匹配换行符…… 需要加上(?s),如下: (?s).*
golang golang: 读取 io.ReadClose 转字符串 使用 bytes.Buffer 进行读取。 完整示例如下: package main import ( "fmt" "net/http" "bytes" ) func main() { response, _ := http.Get("https://golangcode.com/") buf := new(bytes.Buffer) buf.ReadFrom(response.Body) newStr := buf.String() fmt.Printf(
golang cannot assign to struct field in map 报错原因是map无法取址,解决办法:使用 *struct tests := map[string]*struct{ A string B string } { "t1": {} } tests["t1"].A = "1"
postgresql Golang Postgres "LastInsertId is not supported by this driver" When use golang connect to postgres, if you want to call LastInsertId, you will get this error. But you can get the latest ID by another method. Use Returning keyword to get the
golang Golang 使用反射获取 struct 的值 对于指针指向的对象,使用 reflect.ValueOf(...).Elem(...).FieldByName(),否则,直接: reflect.ValueOf(...).FieldByName() type Human struct { name string id int } human := &Human{ name: "Jack", id: 1, } obj := reflect.ValueOf(human) // if it is a poiner,
golang Golang 使用反射获取 interface{} 中属性的值并转化为 map[string]interface{} 首先, 使用 reflect.ValueOf 先获取值, 然后使用 .Elem() 获取对象。再之后就可以通过属性的名称通过反射来获取值了。示例: type Human interface { Name() string Type() string } type Martian struct { name string id int } func (m *Martian) Name() string { return m.name } func
golang golang: use reflect to get field's value from a interface{} to map[string]interface{} If you want to get all fields' value from a interface{}, you can use reflect. First, use reflect.ValueOf to get the value, then use .Elem() get the element. Then you can get
golang Golang 使用反射将 inteface{} 转为 struct{} 如果是仅想知道如何将 interface{} 转化为 struct{} 的话, 代码如下: interface.(*Struct) 使用反射转的话,先用 reflect.ValueOf 来获取 interface 的 value, 然后使用 Interface() 来获取 interface 。 如下: type Human interface { Name() string Type() string } type Martian struct { name string
golang Golang use reflect interface{} to struct{} If you just want to know how to convert interface{} to struct{}, the code just as below: interface.(*Struct) you can use reflect.ValueOf to get the value of interface, then use Interface(
golang [Golang] Postgres "LastInsertId is not supported by this driver" Golang连接 postgres 数据库时,调用 LastInsertId 报错。这是因为 postgres dirver 不支持这个方法,在 postgres 想要获取最新插入数据的 ID 有特定的方法,需要使用 Returning 关键字,如下: var id int if err := db.QueryRow("INSERT INTO table(name) VALUES("xxxx") RETURNING
golang Golang实现字符串Join 使用strings.Join,如下: import ( "strings" ) func TestJoinStr(t *testing.T) { strs := []string{ "a", "b", "c", } t.Log(strings.Join(strs, "-")) } 输出结果:a-b-c
golang golang 实现文件追加 代码如下,主要是文件描述符os.O_WRONLY: f, err := os.OpenFile("test.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.Println(err) } defer f.Close() if _, err := f.WriteString(
vscode VSCode Golang代码提示 首先,需要安装好 go 插件,之间在插件市场输入go,选一个即可安装。 然后,需要安装 go 的工具包。在 vscode 中,输入快捷键:command(ctrl) + shift + p,在弹出的窗口中,输入: go:install/Update Tools,回车后,选择所有插件(勾一下全选),点击确认,进行安装(最好翻墙安装)。 Installing 18 tools
go go测试代码覆盖率 cover参数 go test -cover ... 会输出测试覆盖率 coverprofile参数 go test -coverprofile=coverage.out Go会将测试结果输出的 coverage.out 文件中。然后,可使用go tool查看结果: go tool cover -html=size_coverage.out
golang [Golang] go test 禁用缓存 两种方法 1. GOCACHE go version在1.10以上,但在1.11以上时,这个变量会让go mod不可用 GOCACHE=off go test ... 2. count参数 go test -count=1 ...
golang [Golang]在for循环中给匿名goroutine传入局部变量 给匿名参数传入此局部变量即可,否则每次调用的都是变量的当前值。 如下: for i, item := range items { go func(item int) { // do something }(item) }