gin 框架入门 1、简介1.1 gin 简介 Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance – up to 40 times faster. If you need smashing performance, get yourself s 2024-11-14 Go #Go
14-Go Modules go.mod 简介 go mod init abc 初始化命令会在当前目录下生成 go.mod 文件,在一个项目中,此文件只需要一份,放置在项目根目录。 go.mod 格式12345678910111213141516171819202122232425// 项目名,别人引入你这个项目的路径module github.com/a/b// 2024-11-11 Go #Go
14-Go Modules golang 做包管理有两种方式,分别是 gopath 和 gomod,这两种是互斥的,不可混用。 1、什么是Go Modules?Go modules 是 Go 语言的依赖解决方案,发布于 Go1.11,成长于 Go1.12,丰富于 Go1.13,正式于 Go1.14 推荐在生产上使用。 Go modules 目前集成在 Go 的工具链中,只要安装了 Go,自然而然也就可以使用 Go mod 2024-11-11 Go #Go
14-Go Modules 直接使用 go get ... 添加私有仓库依赖时,会出现以下错误: 12345go get: module github.com/unknown/com: git ls-remote -q origin in D:\IDEA\go\pkg\mod\cache\vcs\ca60e3dfa1619897170f0f21e6f875c057be28088185a4024963a17a2db23167: 2024-11-11 Go #Go
Go 安装之环境变量 GOPATH golang 做包管理有两种方式,分别是 gopath 和 gomod,这两种是互斥的,不可混用。 一、GOPATHGOPATH 是 Go 语言中使用的一个环境变量,它使用绝对路径提供项目的工作目录(也称为工作区)。 工作目录是一个工程开发的相对参考目录,好比当你要在公司编写一套服务器代码,你的工位所包含的桌面、计算机及椅子就是你的工作区。 工作区的概念与工作目录的概念也是类似的。如果不使用工 2024-11-11 Go #Go
Go 安装(Mac) 首先,我们需要确定你的Mac电脑中是否已经安装了Go。打开终端,输入以下命令: 1go version 如果没有安装,该命令将返回“command not found”。接下来,你可以通过以下步骤进行安装: 下载Go语言: 访问 Go的官方网站: https://golang.google.cn/dl/ 。下载 go 安装包 go1.20.3.darwin-amd64.pkg 或 go1.2 2024-11-11 Go #Go
Go 安装(Windows) 前言Go(又称Golang)是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。 罗伯特·格瑞史莫(Robert Griesemer),罗勃·派克(Rob Pike)及肯·汤普逊(Ken Thompson)于2007年9月开始设计Go,稍后Ian Lance Taylor、Russ Cox加入项目。Go是基于Inferno操作系统所开发的。 Go于2009年11 2024-11-11 Go #Go
01-hello world 12345678910package mainimport "fmt"func main() { /* 简单的程序 万能的hello world */ fmt.Println("Hello world")} 代码解读 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。packag 2024-11-01 Go #Go
02-变量 变量的声明声明变量的一般形式是使用 var 关键字 单个变量声明第一种,指定变量类型,声明后若不赋值,使用默认值0。 12345// 格式var v_name v_type// 示例var a int 第二种,根据值自行判定变量类型。 12345// 格式var v_name = value// 示例var a = 1 第三种,省略 var, 注意 := 左侧的变量不应该是已经声明过的,否则会 2024-11-01 Go #Go
03-常量 常量常量是一个简单值的标识符,在程序运行时,不会被修改的量。 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。 常量的定义格式: 1const identifier [type] = value 你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。 显式类型定义: 1const b string = "abc" 隐式类型定义: 1const 2024-11-01 Go #Go
04-函数 函数的声明注意:定义函数的时候,‘{’ 必须和函数名在同一行,不能另起一行。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package mainimport "fmt"func main() { println("foo1:", foo1(1, 3 2024-11-01 Go #Go
05-defer deferdefer 语句被用于预定对一个函数的调用。可以把这类被defer语句调用的函数称为延迟函数。 defer作用: 释放占用的资源 捕捉处理异常 输出日志 结果:如果一个函数中有多个defer语句,它们会以LIFO(后进先出)的顺序执行。 123456789func Demo(){ defer fmt.Println("1") defer fmt.Println("2") d 2024-11-01 Go #Go
06-slice 和 map 数组数组长度固定,不建议用 123456789101112131415161718192021222324252627282930313233package mainimport "fmt" //不建议使用,可以使用动态数组func printArray (array [4]int){ //值拷贝 fmt.Println("---------------输出函数------------- 2024-11-01 Go #Go
07-结构体 结构体的使用1234567891011121314151617181920212223242526272829303132333435363738394041package main import "fmt" // 声明一种数据类型,myint是int的别名type myint int// 声明结构体type Book struct{ title string auth string 2024-11-01 Go #Go
07-面向对象 封装1234567891011121314151617181920212223242526272829303132333435package main import "fmt" // 类名、属性名、方法名、首字母大写代表其他包可以访问,首字母小写代表私有,只有本包内可以使用type Hero struct { Name string Ad int Level int} // 如 2024-11-01 Go #Go
08-interface与类型断言 简介Golang 的语言中提供了断言的功能。golang 中的所有程序都实现了 interface{} 的接口,这意味着所有的类型如 string,int,int64 甚至是自定义的 struct 类型都就此拥有了 interface{} 的接口,这种做法和 java 中的 Object 类型比较类似。那么在一个数据通过 func funcName(interface{}) 的方式传进来的时候,也 2024-11-01 Go #Go
09-反射 reflect 编程语言中反射的概念在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用 2024-11-01 Go #Go
10-结构体标签 12345678910111213141516171819202122232425262728package mainimport ( "fmt" "reflect")type resume struct { Name string `json:"name" doc:"我的名字"`}func findDoc(stru interface{} 2024-11-01 Go #Go
11-goroutine 协程并发协程:coroutine。也叫轻量级线程。 与传统的系统级线程和进程相比,协程最大的优势在于“轻量级”。可以轻松创建上万个而不会导致系统资源衰竭。而线程和进程通常很难超过1万个。这也是协程别称“轻量级线程”的原因。 一个线程中可以有任意多个协程,但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。 多数语言在语法层面并不直接支持协程,而是通过库的方式支持,但用库的方式支持 2024-11-01 Go #Go
12-channel channel 是 Go 语言中的一个核心类型,可以把它看成管道。并发核心单元通过它就可以发送或者接收数据进行通讯,这在一定程度上又进一步降低了编程的难度。 channel 是一个数据类型,主要用来解决 go 程的同步问题以及 go 程之间数据共享(数据传递)的问题。 goroutine 运行在相同的地址空间,因此访问共享内存必须做好同步。goroutine 奉行通过通信来共享内存,而不是共享内存 2024-11-01 Go #Go