12-面向对象之断言与多态 1、断言接口是编程的规范,他也可以作为函数的参数,以让函数更具备适用性。在下列示例中,有三个接口动物接口、飞翔接口、游泳接口,两个实现类鸟类与鱼类: 鸟类:实现了动物接口,飞翔接口 鱼类:实现了动物接口,游泳接口 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 2024-12-02 Go #Go
13-泛型简解 1、泛型泛型是一种独立于所使用的特定类型的编写代码的方法。使用泛型可以编写出适用于一组类型中的任何一种的函数和类型。 2、泛型的语法Go 语言不是主流的面向对象,泛型支持上也有所区别,如Java一切皆为对象,只要确定对象泛型即可统一的泛型模式。Go的每种类型都有区别,可简单分为两类, 类型泛型:切片泛型、哈希泛型、结构体泛型、基础类型泛型等; 函数泛型:函数泛型、方法泛型等。 另外泛型语法不是 2024-12-02 Go #Go
13-泛型详解(转载) 序2022年3月15日,争议非常大但同时也备受期待的泛型终于伴随着 Go1.18 发布了。 1、一切从函数的形参和实参说起假设我们有个计算两数之和的函数 123func Add(a int, b int) int { return a + b} 这个函数很简单,但是它有个问题——无法计算int类型之外的和。如果我们想计算浮点或者字符串的和该怎么办?解决办法之一就是像下面 2024-12-02 Go #Go
00-Go 关键字之介绍 1、关键字关键字即是被 Go 赋予了特殊含义的单词。 Go 一共有 25 个关键字: 12345break default func interface selectcase defer go map structchan else goto 2024-12-01 Go > Go 关键字 #Go #Go 关键字
01-Go 关键字之 import 作用Go 中 import 用于导入包。导入之后就可以使用包中的代码。 用法1234567891011import ( // _ 匿名导包,导入但是不使用,不会报错。(默认情况下 Go 如果导包了而不使用,会报错) // Go 在引入包时会调用包的 init 方法。所以使用 _ 操作,主要是为了使用包的 init 函数,一般用在数据库方面的包中 _ "GolangStudy/5_init/lib1 2024-12-01 Go > Go 关键字 #Go #Go 关键字
02-Go 保留字之 iota iota关键字 iota 声明初始值为0,每行递增 1。 123456789101112131415161718const ( a = iota // 0 b = iota // 1 c = iota // 2)const ( d = iota // 0 e // 1 2024-12-01 Go > Go 关键字 #Go #Go 关键字
Goland 修改变量,全局同步修改 在 GoLand 中,当你修改一个变量的名称时,所有引用该变量的地方也会自动更新。这是因为 GoLand 支持内置的重构功能,包括重命名(Rename)。 步骤: 将光标置于变量名称上。 按下 Shift+F6(Mac 是 Cmd + F6),或者右击,选择菜单栏中的 Refactor->Rename。 在弹出的重命名对话框中输入新的变量名称。 检查预览窗口中的更改,确保它们都是你想 2024-11-22 Go #Go
01-快速开始 1. GORM 中文文档参考链接 Golang写的,开发人员友好的ORM库。 1.1. 概述 全功能ORM(几乎) 关联(包含一个,包含多个,属于,多对多,多种包含) Callbacks(创建/保存/更新/删除/查找之前/之后) 预加载(急加载) 事务 复合主键 SQL Builder 自动迁移 日志 可扩展,编写基于GORM回调的插件 每个功能都 2024-11-15 Go #Go
02-数据库 1. 数据库1.1. 连接数据库要连接到数据库首先要导入驱动程序。例如 1import _ "github.com/go-sql-driver/mysql" 为了方便记住导入路径,GORM包装了一些驱动。 1234import _ "github.com/jinzhu/gorm/dialects/mysql"// import _ "github.com/jinzhu/gorm/dialects/ 2024-11-15 Go #Go
03-模型 1. 模型1.1. 模型定义123456789101112131415161718192021222324252627282930313233343536373839404142434445type User struct { gorm.Model Birthday time.Time Age int Name strin 2024-11-15 Go #Go
04-CRUD读写数据 1 CRUD:读写数据1.1. 创建1.1.1. 创建记录1234567user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}db.NewRecord(user) // => 主键为空返回`true`db.Create(&user)db.NewRecord(user) // => 创建`user 2024-11-15 Go #Go
05-Callbacks 1. Callbacks您可以将回调方法定义为模型结构的指针,在创建,更新,查询,删除时将被调用,如果任何回调返回错误,gorm将停止未来操作并回滚所有更改。 1.1. 创建对象创建过程中可用的回调 1234567891011// begin transaction 开始事务BeforeSaveBeforeCreate// save before associations 保存前关联// upda 2024-11-15 Go #Go
06-高级用法 1. 高级用法1.1. 错误处理执行任何操作后,如果发生任何错误,GORM将其设置为*DB的Error字段 12345678910111213if err := db.Where("name = ?", "jinzhu").First(&user).Error; err != nil { // 错误处理...}// 如果有多个错误发生,用`GetErrors`获取 2024-11-15 Go #Go
07-开发 1. 开发1.1. 架构Gorm使用可链接的API,*gorm.DB是链的桥梁,对于每个链API,它将创建一个新的关系。 1234567891011121314db, err := gorm.Open("postgres", "user=gorm dbname=gorm sslmode=disable")// 创建新关系db = db.Where("name = ?", "jinzhu")// 过 2024-11-15 Go #Go
08-更新日志 1. 更新日志1.1. v1.01.1.1. 破坏性变更 gorm.Open返回类型为*gorm.DB而不是gorm.DB 更新只会更新更改的字段 大多数应用程序不会受到影响,只有当您更改回调中的更新值(如BeforeSave,BeforeUpdate)时,应该使用scope.SetColumn,例如: 123456func (user *User) BeforeUpdate(scope *go 2024-11-15 Go #Go
01-viper 1.介绍Viper是适用于Go应用程序(包括Twelve-Factor App)的完整配置解决方案。它被设计用于在应用程序中工作,并且可以处理所有类型的配置需求和格式。目前Star 15.8k,它支持以下特性: 设置默认值 从JSON、TOML、YAML、HCL、envfile和Java properties格式的配置文件读取配置信息 实时监控和重新读取配置文件(可选) 从环境变量中读取 从远程 2024-11-14 Go #Go
01-快速入门 1.什么是Gin Gin 是一个用Go (Golang)编写的 开源web 框架。 目前在GitHub Start 47.4K, 它是一个类似于 martini 但拥有更好性能的 API 框架,路由解析由于使用的是httprouter,速度提高了近 40 倍。 Github: https://github.com/gin-gonic/gin 中文文档: https://gin-gonic.com 2024-11-14 Go #Go
02-zap 1.项目介绍Gin框架学习使用,并实践常用包在Gin框架中的集成和使用。源码地址: https://github.com/52lu/gin-import-template.git 1.1 项目结构123456789101112├── api # 接口├── config # 配置├── core # 核心代码├── global # 全局变量和常量├── initialize # 初始化相关├── 2024-11-14 Go #Go
02-启动流程分析 1.启动服务1.1 服务源码123456789101112131415package main// 引入gin框架import "github.com/gin-gonic/gin"func main() { // 创建一个默认的路由引擎 engine := gin.Default() // 注册Get路由 engine.GET("/", func(ctx *gin.Context) 2024-11-14 Go #Go
03-gorm 1. 介绍gorm是一个使用Go语言编写的ORM框架。 它文档齐全,对开发者友好,支持主流数据库。具体使用可参考之前的文章Go常用包(十九):全功能ORM框架(gorm) 1.1 集成流程 1.2 涉及目录 2. 配置2.1 编辑主配置./config.yaml1234567891011121314151617181920212223mysql: host: 127.0.0.1 port: 3 2024-11-14 Go #Go