文章分类 - GoLang从入门到放弃
摘要:Go语言拥有许多内置函数,这些函数可以直接使用,无需导入任何包。以下是一些常用的Go语言内置函数: len:用于获取切片、数组、映射、通道或字符串的长度。 slice := []int{1, 2, 3, 4, 5} length := len(slice) // length 将会是 5 cap:用
阅读全文
摘要:在Go语言中,make和new都是用于内存分配的,但它们之间的主要区别在于它们用于分配不同类型的内存。 new new是一个内建函数,用于为指定类型分配内存并返回指向它的指针。new分配的内存会被初始化为零值。new只接受一个参数,即类型,而不是值。它返回一个指向新分配的类型零值的指针。 示例: p
阅读全文
摘要:通过执行 go env可以查看golang相关的变量 set GO111MODULE=on set GOARCH=amd64 set GOBIN= set GOCACHE=C:\Users\lifq\AppData\Local\go-build set GOENV=C:\Users\lifq\App
阅读全文
摘要:前言今天给大家介绍一下Kratos,Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具,使用Kratos的原因主要是感觉原来使用的go-kit工具并不是很方便,期望用上kratos后开发会更快捷一些。Kratos名字根据官方的説法是来源于:《战神》游戏以希腊神话为背景,讲述奎托
阅读全文
摘要:第一节 模板语法一 源代码路径:chapter03\test_syntax_tpl.go 模板路径:template\chapter03\test.html 一、统一使用了 { { 和 } } 作为左右标签 二、上下文 . 访问当前位置的上下文 $ 引用当前模板根级的上下文 $. 引用模板中的根级上
阅读全文
摘要:第一节 使用模板 一. engine.LoadHTMLGlob:推荐 只有一个参数,通配符,如:template/* 意思是找当前项目路径下template文件夹下所有的html文件 e.g.:engine.LoadHTMLGlob("templates/*") 二. engine.LoadHTML
阅读全文
摘要:第一节 gin框架介绍 一、gin框架介绍 gin是用go语言开发的一个web框架,简单易用,是一个轻量级框架。 二、为什么选择gin 1.运行响应非常快 2.快速开发 3.文档齐全 4.社区活跃 三、特性 1.快速:基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。 2.支
阅读全文
摘要:什么是map? map是一种无序的基于key-value的数据结构,Go语言中map是引用类型,必须初始化才能使用 map的定义语法如下: map[KeyType]ValueType 其中,KeyType表示键的类型,ValueType表示值的类型 map类型的变量默认初始值为nil,需要使用mak
阅读全文
摘要:什么是切片? 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。 切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。 创建切片跟创建数组唯一的区别在于 Type 前的 "[]" 中是否有数字,为空
阅读全文
摘要:环境 编程工具 vscode go版本 go version go1.19 windows/amd64 windows10 设置参数 go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn,direct 安装gin mkdir gi
阅读全文
摘要:创建文件 将数据保存到文件之前,先要创建文件。Go语言中提供了一个Create()函数专门创建文件。 该函数在创建文件时,首先判断要创建的文件是否存在。不存在则创建,存在则先把文件清空。 文件创建成功后,该文件会默认的打开,所以不用再执行打开的操作,可以直接向文件中写入数据。 创建文件的步骤: 1.
阅读全文
摘要:什么是空接口? 空接口是特殊形式的接口类型,普通的接口都有方法,而空接口没有定义任何方法口,也因此,我们可以说所有类型都至少实现了空接口。 type empty_iface interface {} 每一个接口都包含两个属性,一个是值,一个是类型。 而对于空接口来说,这两者都是 nil,可以使用 f
阅读全文
摘要:什么是接口? 接口是一种类型,一种特殊的类型,它规定了变量有哪些方法 在编程中会遇到以下场景: 我不关心一个变量是什么类型,我只关心能调用它的什么方法 接口的定义 type 接口名字 interface { 方法名1(参数1,参数2......参数n) (返回值1,返回值2......返回值n) 方
阅读全文
摘要:结构体 Go语言中的基础数据类型可以表示一些食物的基本属性,但是当我们想表达一个事物的全部或者部分属性时,这时候再用单一的基本数据类型就明显无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体,英文名称struct。也就是说我们可以通过struct来定义自
阅读全文
摘要:channel 单纯的将函数执行并发是没有意义的,函数与函数间需要交换数据才能体现并发执行函数的意义。虽然可以使用内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。 为了保证数据交换的正确性,必须使用互斥锁对内存进行加锁,这种做法势必造成性能问题。 Go语言的并发模型是CS
阅读全文
摘要:package main import ( "fmt" "sync" "time" ) var wg sync.WaitGroup func test(i int) { wg.Done() //goroutine 结束就登记-1 fmt.Println("go routine", i) } func
阅读全文