![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
文章平均质量分 75
qqxhb
【内推】【社招】【校招】【实习】【字节跳动】
字节内推,职位类别涵盖研发、产品、运营、设计、市场、销售、职能/支持、教研教学、游戏策划多个方向,具体职位信息可访问内推地址查看。
内推的优势是可以让你的简历被优先筛选哦,欢迎投递!
字节跳动校招内推码: 4PNP6DF
投递链接: https://jobs.toutiao.com/s/eJ161U5
社招:https://job.toutiao.com/s/e1oKkLm
个人公众号:了不起的我和你
展开
-
Go text/template详解:使用指南与最佳实践
Go text/template 是 Go 语言标准库中的一个模板引擎,用于生成文本输出。它使用类似于 HTML 的模板语言,可以将数据和模板结合起来,生成最终的文本输出。Go text/template 是一个简单易用、安全可靠、高效性能、灵活可扩展的模板引擎,适用于生成各种类型的文本输出。在使用模板时,应该遵循最佳实践,注意模板设计原则、模板性能优化和模板安全性。Tips: 欢迎评论区讨论,你想要的或者你知道的其他用法哦!!!原创 2023-07-24 10:27:34 · 2317 阅读 · 0 评论 -
【开发神器】一键生成代码,让开发更高效!
GORM GEN 是 GORM 框架提供的一个命令行工具,它可以根据数据库表的结构自动生成对应的 Go 语言结构体,并且自动添加必要的标签和方法,如表名、主键、索引、查询等。但是,总体来说,GORM GEN 是一款非常实用的开发工具,可以让开发更高效,让你的项目更成功!某公司的开发团队在使用 GORM GEN后,开发效率提高了 50%,同时代码的可读性和可维护性也得到了大幅度提升。不仅如此,GORM GEN还可以避免手写大量的重复代码,提高代码的可读性和可维护性,同时也可以减少开发人员的出错率。原创 2023-06-18 21:45:24 · 739 阅读 · 0 评论 -
零基础上手更安全更友好GORM原作者操刀的GORM GEN
GORM/GEN,持续更新欢迎吐槽Star!!!基于 GORM, 更安全更友好的ORM工具。自动生成CRUD和DIY方法自动根据表结构生成model完全兼容GORM更安全、更友好多种生成代码模式原创 2021-11-29 09:04:58 · 8223 阅读 · 0 评论 -
go踩坑记|time.IsZero()使用踩坑分享
背景业务场景中使用到的API或者RPC接口定义都采用的是thrift,因此时间的传递格式是i64类型的秒级时间戳。一般会选择统一逻辑对RPC的请求转换成数据库的model,时间类型的转换则是通过time.Unix(sec,0)方式转换的,时间是可以为0值。 不久前做一个数据发布录入功能,里面有一个发布时间字段,通过上面的方式转换成model的time.Time类型之后,统一判断如果发布时间是0值(t.IsZero())则重新赋值为当前系统时间即time.Now()。问题按照上面方式写好代码测试发现,数原创 2021-09-13 15:23:27 · 1692 阅读 · 0 评论 -
如何优雅的解决SQL注入 如何摆脱编写繁琐的gorm model GORM/GEN来了
GORM/GEN是一个 GORM 的增强工具,在 GORM 的基础上只做增强不做改变,为简化开发、提高效率而生。原创 2021-08-26 17:39:34 · 3282 阅读 · 0 评论 -
看!Go如何玩转各种并发任务实战
1. go并发基础回顾package sync/**Package atomic provides low-level atomic memory primitivesuseful for implementing synchronization algorithms.These functions require great care to be used correctly.Except for special, low-level applications, synchronization原创 2021-03-31 08:53:30 · 782 阅读 · 0 评论 -
go并发编程之条件变量sync.Cond实战和原理
1. sync.Cond实战今天简单聊一聊条件变量(conditional variable)。我们常常会把条件变量这个同步工具拿来与互斥锁一起讨论。实际上,条件变量是基于互斥锁的,它必须有互斥锁的支撑才能发挥作用。条件变量并不是被用来保护临界区和共享资源的,它是用于协调想要访问共享资源的那些线程的。当共享资源的状态发生变化时,它可以被用来通知被互斥锁阻塞的线程。用Go语言的条件变量在这里的最大优势就是在效率方面的提升。当共享资源的状态不满足条件的时候,想操作它的线程再也不用循环往复地做检查了,只要等原创 2021-03-27 17:47:00 · 389 阅读 · 0 评论 -
浅谈Go 错误异常处理方式和并发陷进
任何一门开发语言中,错误和异常处理都是不可回避的问题,Go 中主要通过 error 和 panic 分别表示错误和异常,并提供了较为简洁的错误异常处理机制。作为一门并发性能优越的语言,Go 虽然降低了协程并发开发的难度,但也存在一些并发陷阱,这就需要我们在开发时额外注意。1. Errors are values错误处理是每个开发人员都需要面对的问题,在大多数的编程语言中比如Java、python,都是通过try-catch 的方式对可能出现错误的代码块进行包装:程序运行 try 中代码,如果 try 中原创 2021-03-27 15:57:55 · 560 阅读 · 0 评论 -
goroutine及调度器GMP模型
协程是一种用户态轻量级线程,goroutine是go自己实现的协程,GMP则是goroutine的调度器模型。1.什么是协程进程是系统资源分配的最小单位, 进程的创建和销毁都是系统资源级别的,因此是一种比较昂贵的操作,进程是抢占式调度其有三个状态:等待态、就绪态、运行态。进程之间是相互隔离的,它们各自拥有自己的系统资源, 更加安全但是也存在进程间通信不便的问题。线程是CPU调度的最小单位,进程是线程的载体容器,多个线程除了共享进程的资源还拥有自己的一少部分独立的资源,因此相比进程而言更加轻量,进程内的原创 2021-02-28 10:42:08 · 290 阅读 · 0 评论 -
Go基础之性能分析PProf
1. 简介pprof 是用于可视化和分析性能分析数据的工具。pprof 以 profile.proto 读取分析样本的集合,并生成报告以可视化并帮助分析数据(支持文本和图形报告)。profile.proto 是一个 Protocol Buffer v3 的描述文件,它描述了一组 callstack 和 symbolization 信息, 作用是表示统计分析的一组采样的调用栈,是很常见的 stacktrace 配置文件格式支持什么使用模式Report generation:报告生成Interact原创 2021-01-02 17:22:02 · 1458 阅读 · 0 评论 -
Go基础之资源管理和错误处理
deferGo语言的 defer 语句会将其后面跟随的语句进行延迟处理,在 defer 归属的函数即将返回时,将延迟处执行defer 逻辑。先被 defer 的语句最后被执行,最后被 defer 的语句,最先被执行。即当有多个 defer 行为被注册时,它们会以逆序执行(类似栈,即后进先出),下面的代码是将一系列的数值打印语句按顺序延迟处理,如下所示:执行顺序package mainimport ( "fmt")func main() { fmt.Println("defe原创 2021-01-02 16:38:10 · 194 阅读 · 0 评论 -
Go基础之函数式编程(闭包)
函数式编程并非Go语言所特有,Go语言对函数式编程主要是体现在闭包上面。函数式编程 vs 函数指针:函数是一等公民:参数,变量,返回值都可以是函数(c++里只有函数指针,Java里函数只是一个名字);高阶函数:函数的参数可以是一个函数;函数–>闭包。//闭包func adder() func(int) int { sum := 0 return func(v int) int { sum += v return sum }}函数闭包原创 2021-01-02 15:59:01 · 118 阅读 · 0 评论 -
Go基础之面向接口
1. Duck Typing“当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。” 我们并不关心对象是什么类型,到底是不是鸭子,只关心行为。在面向对象的编程语言中,当某个地方(比如某个函数的参数)需要符合某个条件的变量(比如要求这个变量实现了某种方法)时,如果判断这个变量是否“符合条件”的标准是: 这个变量的类型是否实现了这个要求的方法(并不要求显式地声明),那么这种语言的类型系统就可以称为 duck typing。Python 中的duck typingdef.原创 2021-01-02 15:42:51 · 193 阅读 · 0 评论 -
Go基础之封装Go 结构体及常用命令
Go语言仅支持封装,不支持继承/多态。1. Go 结构体 (struct)结构体就是一个复杂的数据类型,里面可以包含字段,也可以嵌套其他结构体Go 中没有 class,而是使用 struct 。结构体命名一般都是用CamelCase,首字母大写表示public,首字母小写表示private,和go变量定义一样。type TreeNode struct { value int left, rignt *TreeNode}go语言采用的是目录分包,同一个目录下是一个包,在文件开头使用pack原创 2021-01-02 15:04:21 · 334 阅读 · 0 评论 -
Go基础之Go容器
Go容器go 容器用三种: 数组(Array) 、切片(Slice)、映射(map)1. 数组 Array数组:是一个长度固定,用于存储一段具有相同类型元素的连续块。在 Go 开发中一般不直接使用数组,而是使用切片,数组是定长的,不可扩展,切片相当于动态数组,使用场景多。func opArray() { var arr1 [3]int // [0 0 0] 声明数组,不赋初值(使用默认值) arr2 := [3]int{1, 2, 3} // [1 2 3]// 字面量声明数组,原创 2021-01-02 13:52:08 · 265 阅读 · 0 评论 -
Go基础之GO特殊语法
文章目录1. Go简介2. Go的数据类型2.1 布尔型2.2 数字类型2.3 字符串类型:2.4 派生类型:3. Go变量声明2.1 标准格式3.2 批量格式3.3 简短格式3.4 常量4. go循环语句5. go 条件语句1. Go简介Go语言也称为 Golang,是由 Google 公司开发的一种静态强类型、编译型、并发型、并具有垃圾回收功能的编程语言。Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布。Go 是非常年轻的一门语言,它的主要目标是“兼具 Python原创 2020-11-16 10:50:45 · 427 阅读 · 2 评论