go
SeasonRun
君子不器
展开
-
golang基础---嵌套结构体
如下json返回值该如何解析?{ "status": "success", "data": { "resultType": "matrix", "result": [ { "metric": { "pod_name": "prometheus-k8s" }, "values": [原创 2021-02-10 15:13:59 · 875 阅读 · 0 评论 -
golang map初始化
package mainimport "fmt"func main() { var str0 map[string]string fmt.Println(str0) if str0==nil{ fmt.Println("str0 is nil") } //str0["hello"]="world" str1 := make(map[string]string) fmt.Println(str1) if len(str1)==0{ fmt.Println("str1 is .原创 2020-09-06 12:37:17 · 361 阅读 · 0 评论 -
jwttoken解析逻辑
拿到JWTtoken可以先到https://jwt.io进行解析,只要输入jwttoken即可看到解析结果,便于编码时获取自己需要的结果。func Getnssa(jwttoken string) (ns, sa string) { //SecretKey是自己定义的一个常量 claims, err := ParseToken(jwttoken, []byte(SecretKey)) claim := claims.(jwt.MapClaims) var namespace in原创 2020-08-30 20:38:10 · 505 阅读 · 0 评论 -
vault 操作mapping逻辑
1.新增vault新增vault时需要先读取已存在的vault进行mapping ,得到最终的vault data,下述代码中existsecret为已存在的vault,requestBody为新传入的vault。代码同样包含了update逻辑,即当新传入的key与已有的key相等时,则将value更新为新传入的value。m := make(map[string]interface{})datas := make(map[string]interface{})//first verify i原创 2020-08-28 11:45:03 · 258 阅读 · 0 评论 -
golang map集合合并
以下代码实现两个集合数据合并,如y中的数据在x已存在则使用y中的数据更新,如x中的数据在y中不存在则加入集合,如y中数据有新增的则加入集合。package mainimport ( "encoding/json" "fmt")func main() { x := map[string]string{"1": "110", "2":"120", "3":"119"} y := map[string]string{"1": "111", "2":"122", "4":"129"}原创 2020-08-26 21:15:03 · 15701 阅读 · 4 评论 -
golang模糊查询
下面介绍使用fuzzy.Find和string.Contains分别进行模糊查询package mainimport( "github.com/lithammer/fuzzysearch/fuzzy" "strings" "fmt")func main() { //fuzzy words := []string{"cartwheel", "foobar", "wheel", "baz"} match1 :=fuzzy.Find("whl", words) // [cartwhe原创 2020-08-22 22:17:05 · 4108 阅读 · 0 评论 -
golang 访问HTTPS请求跳过证书验证
import "net/http"func main(){ url := "https://XXXXX" user := XXXX paasswd := XXXX payload := strings.NewReader("{\n\t\"username\":" + `"` + user + `"` + ",\n\t\"password\":" + `"` + passwd + `"` + "\n}") req, err :.原创 2020-08-22 21:43:14 · 3829 阅读 · 1 评论 -
golang学习总结(五)-http token传递
最近开发的项目涉及到login后生成token验证,同时还要传递userID,用于页面跳转后进行权限校验,流程如下:下面直接上代码:func loginHandler(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { http.ServeFile(w, r, "tmpl/login.html")...原创 2020-03-21 22:45:37 · 1954 阅读 · 0 评论 -
golang学习总结(四)-程序编译
最近开发了一个小程序,到了部署阶段,学习了部署的步骤,总结如下:下载基础镜像golang编译使用的基础镜像有以下三种:1.golang:onbuild构建简单,包含编译是的所有运行环境,但体积较大Dockerfile配置如下:FROM golang:onbuildEXPOSE 80802.golang:alpine构建复杂, 需执行编译动作,体积小Dockerfi...原创 2020-03-21 22:22:47 · 280 阅读 · 1 评论 -
golang学习总结(一)
golang使用mysqlgolang连接mysql使用orm框架,先下载package,在Terminal下执行go get -u github.com/jinzhu/gorm,创建main.go测试文件,代码如下。package mainimport ( "fmt" "strings" "time" "github.com/jinzhu/gorm" _ "githu...原创 2020-03-09 22:34:10 · 1106 阅读 · 0 评论 -
go学习总结(十)-爬虫(豆瓣电影)
直接上代码:package mainimport ( "fmt" "io/ioutil" "net/http" "regexp" "time" "os" "strconv")//定义新的数据类型type Spider struct { url string header map[string]string...原创 2020-02-04 22:16:38 · 1624 阅读 · 0 评论 -
go学习总结(九)
1.实现Reader类型package mainimport "golang.org/x/tour/reader"type MyReader struct{}// TODO: 给 MyReader 添加一个 Read([]byte) (int, error) 方法func (r MyReader) Read(b []byte) (int, error){ b[0] = 'A...原创 2020-02-04 09:54:14 · 1687 阅读 · 0 评论 -
go学习总结(八)
1.类型断言类型断言 提供了访问接口值底层具体值的方式。t := i.(T)该语句断言接口值 i 保存了具体类型 T,并将其底层类型为 T 的值赋予变量 t。若 i 并未保存 T 类型的值,该语句就会触发一个panic。为了 判断 一个接口值是否保存了一个特定的类型,类型断言可返回两个值:其底层值以及一个报告断言是否成功的布尔值。t, ok := i.(T)若 i 保存了一个 T...原创 2020-02-02 20:58:26 · 1646 阅读 · 0 评论 -
go学习总结(七)
1.斐波拉契闭包package mainimport "fmt"// 返回一个“返回int的函数”func fibonacci() func() int { x,y :=0,1 //预定义两个值 return func() int{ tmp:=x x,y=y,x+y //核心代码 return tmp }}func main() { f := fibona...原创 2020-02-01 21:28:31 · 1676 阅读 · 0 评论 -
go学习总结(六)
1.指针指针保存了值的内存地址。 类型 *T 是指向 T 类型值的指针,其零值为 nil。& 操作符会生成一个指向其操作数的指针。 * 操作符表示指针指向的底层值。 package mainimport "fmt"func main() { i, j := 42, 27 p := &i // 指向 i fmt.Println(*p) /...原创 2020-01-31 20:34:41 · 1765 阅读 · 1 评论 -
go学习总结(五)
1.格式化输出格式化指令 含义 %% %字面量 %b 一个二进制整数,将一个整数格式转化为二进制的表达方式 %c 一个Unicode的字符 %d 十进制整数 %o 八进制整数 %x 小写的十六进制数值 %X 大写的十六进制数值 %U 一个Unicode表示法表示的整型码值 %s ...原创 2020-01-31 18:30:03 · 2114 阅读 · 0 评论 -
go学习总结(四)
1.包 每个 Go 程序都是由包构成的。程序从 main 包开始运行。本程序通过导入路径 "fmt" 和 "math/rand" 来使用这两个包。按照约定,包名与导入路径的最后一个元素一致。例如,"math/rand" 包中的源码均以 package rand 语句开始。 package mainimport ( "fmt" "math/rand" "time")...原创 2020-01-31 17:15:20 · 1627 阅读 · 0 评论 -
go学习总结(三)
指针变量是一种占位符,用于引用计算机内存地址,go语言中取内存地址的符号是&,&放到变量前面即返回变量的内存地址; 一个指针变量指向了一个值的内存地址,使用指针前需要声明指针,使用*,var var_name *var-type,如var i *int; 当一个指针北定以后没有分配任何变量时,称为空指针,它的值为nil package mainimport "fmt"...原创 2020-01-21 16:55:24 · 1556 阅读 · 0 评论 -
go学习总结(二)
if-else package mainimport "fmt"func main(){ var a int = 10 var b = 10 if a > b { fmt.Println("a>b") }else if a < b{ fmt.Println("a<b") }else{ ...原创 2020-01-20 22:38:23 · 1568 阅读 · 0 评论 -
go学习总结(一)
打印输出:首先要import"fmt",调用时执行fmt.println(text),注意Println可以打印变量和字符串,而fmt.Printf(string)只能打印字符串。 关键字:Go包含以下25个关键字,不要随便使用。另外还有36个预定义标识符:3.Go数据类型4.变量go语言变量由字母、数字、下划线组成,首个字符不能为数字。声明变量使用var关键字...原创 2020-01-20 14:59:45 · 2946 阅读 · 0 评论