随笔分类 - Go
摘要:go net包的基本使用之记录一些函数(包含一个简单的UDP客户端和服务端示例) 1、net.ResolveIPAddr 根据域名返回IP 2、net.ParseIP 监测IP是否有效 有效返回IP, 无效返回nil 3、net.Interfaces 获取系统的网卡信息 3.1、inter.Flag
阅读全文
摘要:Go语言sync.Map的简单使用(map是线程不安全的) 1、map是线程不安全的 Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。 可以这么复现,会报错: fatal error: concurrent map read and map write package
阅读全文
摘要:go-daemon的简单使用 没什么特殊的,就是记录一下笔记,和官网以及百度上的几乎一模一样 1、介绍 这是一个在 Go 中编写系统守护进程的库。 2、特性 Go 协程安全的守护进程; 内置使用 pid 文件; 轻松处理系统信号; 守护进程的控制。 3、基本使用 导入"github.com/sevl
阅读全文
摘要:go template模板的语法 当前对象 {{ . }} 表示当前对象,当前对象针对于作用域而言 例子1:当前传入字符串对象,{{ . }}直接表示字符串 这里的{{ . }}就是传入的hello world 例子2:当前传入结构体对象,{{ . }} 表示结构体 {{ .Name }}和{{ .
阅读全文
摘要:Go语言依赖管理 0、说明: 导入第三方的库,一般有下面几种方式进行管理第三方库,现在一般推荐使用go mod的方式进行管理。其他两个了解一下就行了。 1、管理方式GOPATH GOPATH是一个环境,Linux默认在~/go目录下,Windows默认在%USERPOFILE%\go目录下,当然也可
阅读全文
摘要:一些注意事项: 1.每个目录只有能一个包,可以有多个文件,但是所有文件都必须是同一个包(编辑器会提示的,不用特意关注) 2.包内的大写函数、大写结构体是包外可见,小写函数、小写结构体仅是包内可见 3.为一个结构体定义的方法,必须放在同一个包内,可以是不同的文件 ①但是如果想扩展结构体的方法,也就是说
阅读全文
摘要:1、结构体的定义 定义:type xxx struct 使用:var关键字创建、冒号:创建、new关键字创建 例如 package main import "fmt" type treeNode struct { value int left, right *treeNode } func main
阅读全文
摘要:1、先看看Go语言存的字符串的表示 写在前面:Go语言中的rune其实就是其他类型的char,它的本质是int32 先举个例子看看字节形式 package main import "fmt" func main() { s := "hello world 墨玉麒麟" //先看看字节组成 b := [
阅读全文
摘要:1、定义Map map[key]value形式申明 make方式申明 package main import "fmt" func main() { m := map[string]string{"a": "1", "b": "2"} //冒号:定义 fmt.Println(m) //map[a:1
阅读全文
摘要:1、来源于数组的切片 package main import "fmt" func main() { a := [...]int{1, 2, 3, 4, 5, 6, 7, 8} //添加了...表示数组 b := a[2:6] //切片 fmt.Println(b) //[3 4 5 6] 左包右不
阅读全文
摘要:1、使用var关键字申明,指定数组的长度 package main import "fmt" func main() { var a [5]int fmt.Println(a) //默认是零值[0 0 0 0 0] var b [5]string fmt.Println(b) //默认是零值[] v
阅读全文
摘要:1、一般用法 以func关键字申明,传入参数名称写在前,参数类型写在后 返回可以申明返回值名称,也可以不申明,申明返回值时返回类型写在后,申明返回值,相当于定义了一个变量,来接返回值(一般不建议使用,毕竟函数体一大就不是很清晰能看到那里赋值了) 返回可以返回多个值 不接收某个返回值,用下划线_代替就
阅读全文
摘要:Go条件语句的基本使用 1、一般使用 package main import "fmt" func main() { s := 0 for i := 1; i <= 100; i++ { s += i } fmt.Println(s) } 2、省略起始条件 package main import (
阅读全文
摘要:Go语言Switch的用法 1、等值匹配 package main import "fmt" func f(a, b int, op string) int { switch op { case "+": return a + b case "-": return a - b case "*": r
阅读全文
摘要:Go语言的安装 1、下载地址 https://studygolang.com/dl Windows系统下载msi文件(例如https://golang.google.cn/dl/go1.18.3.windows-386.msi),然后安装就直接下一步,下一步就行 Linux系统下载tar.gz文件(
阅读全文
摘要:Go定义常量和枚举类型 1、使用const定义常量 package main func main() { const a = 1 //使用const定义常量 const b, c = "b", "c" //使用const定义常量 const filename = "a.txt" //使用const定
阅读全文
摘要:gorm查询条件中带有limit的同时查询count总条数 1、场景 假设我需要查询用户表中年龄是18岁的用户,且取第4 14条数据,则sql语句应为 sql SELECT FROM WHERE age = 18 ORDER BY username asc LIMIT 10 OFFSET 3 sql
阅读全文
摘要:1、URL的定义信息 type URL struct { Scheme string Opaque string // encoded opaque data User *Userinfo // username and password information Host string // hos
阅读全文
摘要:说明 抄自官方文档 https://xuri.me/excelize/zh-hans/ bilibili https://www.bilibili.com/video/BV1hU4y1F7wQ 安装 使用最新版本 Excelize 要求您使用的 Go 语言为 1.15 或更高版本。 安装命令 go
阅读全文
摘要:1、判断是否为零值 package main import ( "fmt" "reflect" ) type A struct { Name string } func IsBlank(i interface{}) bool { value := reflect.ValueOf(i) switch
阅读全文