代码改变世界

随笔分类 -  golang

golang build 参数

2023-02-25 21:21 by youxin, 471 阅读, 收藏, 编辑
摘要: go 的编译是以 package main 的 main() 函数作为主入口,生成可执行文件。若 build 的是非 main 包,则不会生成可执行文件,只检查是否可执行编译。可以输入 go help build 查看官方解释。go build 编译包时,会忽略“_test.go”结尾的文件(即测试 阅读全文

golang gorm使用

2022-12-02 21:03 by youxin, 361 阅读, 收藏, 编辑
摘要: gorm链式操作: Method Chaining,Gorm 实现了链式操作接口,所以你可以把代码写成这样: // 创建一个查询 tx := db.Where("name = ?", "jinzhu") // 添加更多条件 if someCondition { tx = tx.Where("age 阅读全文

gRPC使用

2022-09-25 17:58 by youxin, 392 阅读, 收藏, 编辑
摘要: A high performance, open source universal RPC framework Why gRPC? gRPC is a modern open source high performance Remote Procedure Call (RPC) framework 阅读全文

golang goroutine协程泄露

2022-09-25 01:13 by youxin, 426 阅读, 收藏, 编辑
摘要: 语言级别的并发支持是 Go 的一大优势,但这个优势也很容易被滥用。通常我们在开始 Go 并发学习时,常常听别人说,Go 的并发非常简单,在调用函数前加上 go 关键词便可启动 goroutine,即一个并发单元,但很多人可能只听到了这句话,然后就出现了类似下面的代码: package main im 阅读全文

golang context

2022-09-25 00:16 by youxin, 41 阅读, 收藏, 编辑
摘要: In the previous example we looked at setting up a simple HTTP server. HTTP servers are useful for demonstrating the usage of context.Context for contr 阅读全文

golang值传递和引用传递

2022-09-24 22:45 by youxin, 1486 阅读, 收藏, 编辑
摘要: Go中所有的参数传递都是值传递,拷贝的都是一个副本。但是,这里分两种情况讨论,引用类型 和 非引用类型。 非引用类型(值类型):int,string,float,bool,数组和struct; 特点:值类型变量声明后,变量存的是值,内存通常在栈上分配,栈在函数调用后会被释放。 引用类型:指针,sli 阅读全文

golang不定参数

2022-08-24 22:51 by youxin, 63 阅读, 收藏, 编辑
摘要: 函数定义 首先来看如何定义一个不定参数的函数: 1 2 func YourFun(v... interface{}){ } 该函数定义,定义了一个接受任何数目任何类型参数的函数。这里特殊的语法是三个点“...”,在一个变量后面加上三个点后,表示从该处开始接受不定参数,不同于python,golang 阅读全文

golang语法速记

2022-08-21 22:28 by youxin, 56 阅读, 收藏, 编辑
摘要: Golang语言中存在一个关键字type,type又有两种使用方式,一种是类型别名,一种是类型定义。 GoLang1.9后对內建定义类型使用了新的写法: type NewName = Type 这个NewName只是Type的别名。NewName和Type是一致的类型。 而类型定义,则是会产生新的类 阅读全文

golang编译问题

2022-08-20 17:41 by youxin, 70 阅读, 收藏, 编辑
摘要: golang main包下推荐只有一个main.go的入口文件 当有其他的go文件 , 并且在其他go文件中定义了函数 在main.go入口文件中调用了该函数 , 执行go run main.go , 会提示undefined 如果非得这样做那么go run 的时候把所有文件都得加上 , 否则默认只 阅读全文

golang unit test测试

2022-08-10 01:23 by youxin, 596 阅读, 收藏, 编辑
摘要: Golang单元测试对文件名和方法名,参数都有很严格的要求。 例如: 1、文件名必须以xx_test.go命名 2、方法必须是Test[^a-z]开头 3、方法参数必须 t *testing.T‘ Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的 阅读全文

golang 空结构体 struct{}

2022-05-21 23:22 by youxin, 950 阅读, 收藏, 编辑
摘要: 定义的各种姿势原生定义a := struct{}{}1struct{} 可以就认为是一种类型,a 变量就是 struct {} 类型的一种变量,地址为 runtime.zerobase ,大小为 0 ,不占内存。 重定义类型golang 使用 type 关键字定义新的类型,比如: type empt 阅读全文

golang receiver of method方法接收者

2022-05-04 12:45 by youxin, 130 阅读, 收藏, 编辑
摘要: 什么是method(方法)?method是函数的另外一种形态,隶属于某个类型的方法。 method的语法: func (r Receiver) funcName (parameters) (result) receiver可以看作是method的第一个参数,method并且支持继承和重写。 Go中虽 阅读全文

golang 文件操作io bufio ioutil

2022-05-01 22:33 by youxin, 272 阅读, 收藏, 编辑
摘要: io golang中 os.File 库封装了文件相关操作,File是一个结构体。 go语言标准库文档:https://studygolang.com/static/pkgdoc/pkg/os.htm#File 具体的使用: 1、打开文件1)os.Open //Open打开一个文件用于读取。//如果 阅读全文

golang 循环变量

2022-04-09 11:55 by youxin, 159 阅读, 收藏, 编辑
摘要: 下面例子: package main import "fmt" func test1() { a1 := []int{1, 2, 3} a2 := make([]*int, len(a1)) for i, v := range a1 { a2[i] = &v } fmt.Println("值:", 阅读全文

golang 实践

2022-04-05 00:23 by youxin, 41 阅读, 收藏, 编辑
摘要: Golang range循环陷阱 https://zhuanlan.zhihu.com/p/158583555 2. for和range性能大比拼2.1 切片[]int通过benchmark对for和range进行测试,遍历 []int 类型的切片,for 与 range 性能几乎没有区别。2.2 阅读全文

golang signal信号处理

2022-04-03 17:02 by youxin, 524 阅读, 收藏, 编辑
摘要: 1、使用场景 实际项目中,我们希望修改了配置文件后,但又不想通过重启进程让它重新加载配置文件,可以使用signal的方式进行信号传递,或者我们希望通过信号控制,实现一种优雅的退出方式。Golang为我们提供了signal包,实现信号处理机制,允许Go 程序与传入的信号进行交互。 2、常用的Term信 阅读全文

golang package和module使用

2022-04-02 22:16 by youxin, 136 阅读, 收藏, 编辑
摘要: Go has no sub-packages When you want to split your packages to organize your BIG package, you may make some of the internals of your package visible t 阅读全文

golang常见问题汇总

2022-04-02 20:40 by youxin, 336 阅读, 收藏, 编辑
摘要: 问题:cannot use variable (type interface {}) as type int in assignment: need type assertion 办法:https://go.dev/tour/methods/15 Type assertions A type ass 阅读全文

golang json 使用

2022-03-28 00:00 by youxin, 475 阅读, 收藏, 编辑
摘要: golang关于json库的一个比较容易陷入的坑 uint8[]数组的json转换问题. 类似这个CA如果实例转化成json.List会变成字符串. type CA struct { List []uint8} func main() { ca := CA{[]uint8{1,2,3,4,5,6,7 阅读全文

golang project-layout

2022-03-27 16:44 by youxin, 106 阅读, 收藏, 编辑
摘要: 根据社区 Standard Go Project Layout 提出的方案,我们可以将一个 Go Project 划分成以下几大目录: https://github.com/golang-standards/project-layout/blob/master/README_zh.md Go 目录 阅读全文