随笔分类 - go
go
摘要:1. 无中间件启动 #使用 r := gin.New() #替代 // 默认启动方式,包含 Logger、Recovery 中间件 r := gin.Default() 2. 中间件启动 func main() { // 创建一个不包含中间件的路由器 r := gin.New() // 全局中间件
阅读全文
摘要:功能: 1. 对登录和注册表单进行验证 2. 对表单返回的错误进行中文翻译 3. 对表单返回的数据进行处理,大小写处理和切割 package main import ( "fmt" "net/http" "reflect" "strings" "github.com/gin-gonic/gin" "
阅读全文
摘要:1. 输出json和protobuf 新建user.proto文件 syntax = "proto3"; option go_package = ".;proto"; message Teacher { string name = 1; repeated string course = 2; } g
阅读全文
摘要:1. 为什么不使用多线程 python, java c++ 采用多线程和进程变成 多线程-每个线程占用的内存比较多,而且系统切换开销很大 2. go语言控制主的goroutine在子协程结束后结束 如何解决主的goroutine在子协程结束后自动结束 使用:sync.WaitGroup packag
阅读全文
摘要:1. 为什么需要代码规范 代码规范不是强制的,也就是你不遵循代码规范写出来的代码运行也是完全没有问题的 代码规范目的是方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和 Go 语言提供的常用的工具这几个方面做一个说明。 规范并不是唯一的,也就是
阅读全文
摘要:排序 使用go的sort进行排序,必须要实现三个方法: Len Less Swap package main import ( "fmt" "sort" ) type Course struct { Name string Price int Url string } type Courses []
阅读全文
摘要:package main import "fmt" type Course struct { name string price int url string } type Printer interface { printInfo() string } func (c Course) printI
阅读全文
摘要:一. 描述 go语言的接口设计其实就参考了鸭子类型(python)和java的接口 1. 什么是鸭子类型 python本身是基于鸭子类型设计的一门语言 - 协议最重要 其实类并没有继承任何类,但是实现了特定的方法名, 就成实现特定的功能,其实就是一种协议 而python的协议是怎么抛出来的,实际上就
阅读全文
摘要:一.定义 结构体的字段除了名字和类型外,还可以有一个可选的标签(tag): 它是一个附属于字段的字符串,可以是文档或其他的重要标记。 比如在我们解析json或生成json文件时,常用到encoding/json包, 它提供一些默认标签,例如:omitempty标签可以在序列化的时候忽略0值或者空值。
阅读全文
摘要:go语言其实不支持继承, 但是可以达到同样效果,组合 package main import "fmt" type Teacher struct { Name string Age int Title string } func (t Teacher) teacherInfo() { fmt.Pri
阅读全文
摘要:一. type 1. 作用 1. 给一个类型定义 别名, 实际上为什么会有byte, 就是我为了强调我们现在处理的对象是字节类型 这种别名实际上还是为了代码的可读性, 这个实际上本质上仍然是uint8 无非就是在代码编码阶段可读性强而已 2. 第二种 就是基于一个已有的类型定义一个新的类型 3. 定
阅读全文
摘要:错误和异常是两个不同的概念,非常容易混淆。很多程序员习惯将一切非正常情况都看做错误,而不区分错误和异常,即使程序中可能有异常抛出,也将异常及时捕获并转换成错误。从表面上看,一切皆错误的思路更简单,而异常的引入仅仅增加了额外的复杂度。 但事实并非如此。众所周知,Golang遵循“少即是多”的设计哲学,
阅读全文
摘要:一. defer概述 defer用来声明一个延迟函数,把这个函数放入到一个栈上,当外部的包含方法return之前,返回参数到调用方法之前调用,也可以说是运行到最外层方法体时调用。我们经常用他来做一些资源的释放,比如关闭io操作。 defer是golang的一个特色功能,被称为“延迟调用函数”。当外部
阅读全文
摘要:1. 函数定义 1. 函数的定义方法 package main import ( "errors" "fmt" ) //相比较其他静态语言,go语言的函数有很多两点 //函数的几个要素: 1. 函数名 2. 参数 3. 返回值 //函数第一种定义方法 func add(a, b int) int {
阅读全文
摘要:符号: &:取地址符号 *:取地址的值的符号 *(指针)与&(地址) 定义int的指针 var ip *int //这个变量里面就只能保存地址类型这种值 ip = &a fmt.Println(a) fmt.Println(ip) //如果要修改指针指向的变量的值,用法也比较特殊 *ip = 30
阅读全文
摘要:1. 数组 1. 特征 静态语言的数组特征: 1.大小确定 2.类型一致 只能取值,修改值 2.定义 // 3种方式,声明,初始,省略号 // 变量arr1类型为[5]int var arr1 [5]int // 变量arr2类型为[3]int,同时初始化赋值 var arr2 [5]int = [
阅读全文

浙公网安备 33010602011771号