Golang学习笔记

Golang面试题解析
Go 笔试面试
Go面试题答案与解析
Golang经典面试题上
Golang经典面试题下
golang语言面试题总结(一)
Golang面试题解析

Golang-常用第三方库

微服务

Go语言构建微服务一站式解决方案
Go微服务 - 第一部分 - 介绍及理论基础
Go 微服务实战汇总
Go实践微服务 – go-micro编写微服务
哔哩哔哩-哔哩哔哩的Go微服务实战
04【千锋Go语言】Go语言微服务实践
go-micro电商项目实战简介

请求路由-mux

mux学习
Golang 第三方库学习 · mux
golang进阶(四)——路由mux的最佳实践
Gorilla学习笔记

日志-logrus

golang日志框架logrus
logrus 安装 使用
logrus日志使用详解
golang日志框架之logrus

参数校验-validator

6.4. validator 请求校验
Golang validator 详解

定时任务-robfig/cron

golang cron 定时任务使用
Gin实践 连载十一 Cron定时任务
github.com/robfig/cron【Golang 常用包推荐】
golang版的crontab
golang crontab的计划任务及定时任务使用
golang cron定时任务
Go cron定时任务的用法

命令行-urfave/cli

Go语言命令行库urfave/cli简介
Golang的一个CLI框架介绍,个人学习备忘
cli - 构建强大命令行程序的工具箱 (1)

Go相关知识点

排序

golang struct里面的字段,或者slice排序

加密/解密

golang.org/x/crypto/scrypt应该如何使用?
在Golang中如何用scrypt对敏感信息加密

database/sql

go-sql-driver: invalid connection 和 [mysql] 2019/xx/xx 12:xx:55 packets.go:36: unexpected EOF
使用go-sql-driver.mysql包报错unexpected EOF
MYSQL 设置 FOR UPDATE 超时时间
关于Golang中database/sql包的学习笔记
Go database/sql文档

程序结构

Go 语言 switch 语句

解析yaml

Go语言之读取yaml配置文件,转换成struct结构,json形式输出

时间戳及Time转换

Go语言 time时间格式转换
golang时间戳和时间的转化
Go时间戳和日期字符串的相互转换

反射

Go语言实战笔记(二十四)| Go 反射

值传递与引用传递

值传递: b为a的复制品
引用传递: a,c指向同一个内存地址
	&: 取指针指向的地址
	*: 取指针指向的值

基本数据类型

golang 整数常量INT_MAX INT_MIN最大值最小值

字符串

[Golang] string类型和其他类型的值的互转
golang 字符串比较是否相等
golang substring
判断字符串是否为空
GO-字符串常用操作

类型转换

go语言string、int、int64互相转换
golang类型int64强制转换成int

Go原生API

fmt

fmt.Fprintf()函数的作用和用法?

//		生成格式化字符串并写入W, 返回写入的字节数
// Fprintf根据format参数生成格式化的字符串并写入w。返回写入的字节数和遇到的任何错误。
func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error)

func Fprintln()函数的作用和用法?输出重定向(包含换行)

// Fprintln采用默认格式将其参数格式化并写入w。总是会在相邻参数的输出之间添加空格并在输出结束后添加换行符。
// 返回写入的字节数和遇到的任何错误。
func Fprintln(w io.Writer, a ...interface{}) (n int, err error)

fmt.Sprintf()方法的作用和用法?

//		生成格式化字符串并返回
// Sprintf根据format参数生成格式化的字符串并返回该字符串。
func Sprintf(format string, a ...interface{}) string

path/filepath

filepath.Base()方法的作用和用法?

//		获取指定路径的最后一个字符串并返回
// Base函数返回路径的最后一个元素。在提取元素前会求掉末尾的路径分隔符。如果路径是"",会返回".";如果路径是只有一个斜杆构成,会返回单个路径分隔符。
func Base(path string) string

os

os.Open()函数的作用和用法?——只读模式打开文件

// 						Open打开一个文件用于读取。
// 如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有O_RDONLY模式。
// 如果出错,错误底层类型是*PathError。
func Open(name string) (file *File, err error)

os.OpenFile()函数的作用和用法?——指定选项、指定模式打开指定文件

// OpenFile是一个更一般性的文件打开函数,大多数调用者都应用Open或Create代替本函数。
// 它会使用指定的选项(如O_RDONLY等)、指定的模式(如0666等)打开指定名称的文件。
// 如果操作成功,返回的文件对象可用于I/O。如果出错,错误底层类型是*PathError。
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)

Go相关命令

go

go		# 查看go支持的所有命令

go get

go get	# 通过go下载和安装相关资源
-v		# 显示下载和安装过程的详细信息
	go get -v github.com/beego/bee		# 通过go下载和安装bee工具

go fmt

go fmt	# 格式化当前包中的go源文件

go list

go list		# 列出当前安装的全部package

参考文档

go get
《Go Web编程》1.3 Go命令

Golang项目

基于GO语言大型企业级电商秒杀系统实战教程

Golang应用

用GO生成和识别二维码

相关异常

Golang使用pkg-config自动获取头文件和链接库的方法
panic: reflect: reflect.Value.SetUint using value obtained using unexported field(go语言)

相关问题

解释如下代码的含义?重点说明log字段的作用和用法?

//ExecuteContext 用于将对引擎的调用过程返回给调用者
type ExecuteContext struct {
	Action       string `log:"action"`  // 所执行操作的名称
	IDName       string `log:"id_name"` // 所操作的资源的ID描述
	Method       string `log:"method"`  // HTTP Request Method
	URL          string `log:"url"`     // HTTP Request URL
	RequestBody  []byte `log:"req"`     // HTTP Request Body
	StatusCode   int    // HTTP Response Status Code
	ResponseBody []byte `log:"resp"` // HTTP Response Body
	ResponseObj  interface{}
}

Go相关学习资料

1. 文章

golang
Golang资料集
系统学习GO,推荐几本靠谱的书?

2. 书籍

Go语言编程_许式伟

源代码: gobook-src

相关文档

《Go语言编程》【3.6 完整示例】代码错误和文件目录结构

Go Web 编程

在线阅读: build-web-application-with-golang

源代码: https://github.com/GitHub-Fly/build-web-application-with-golang/tree/master/en/code

Go程序设计语言

《Go 程序设计语言》示例与习题
Go程序设计语言课后习题答案


Go相关面试题

mutex

考点

Mutex--互斥锁, 只允许当前goroutine读写, 不允许其他goroutine读写
RWMutex--读写锁, 读锁时, 允许多个goroutine同时读; 写锁时, 只允许当前goroutine读写, 此时相当于互斥锁
无论是Mutex还是RWMutex, 与Lock()对应的都是Unlock()

RWMutex.RLock()--读写锁中的读锁, 读锁支持多个goroutine同时读
RWMutex.Lock()--读写锁中的写锁, 只允许当前goroutine读写, 不允许其他goroutine读写

相关题目

牛客网: 关于同步锁,下面说法正确的是()

channel

考点

无缓冲的channel是同步的, 在接收方没有接收的情况下会阻塞
有缓冲的channel是非同步的, 在接收方没有接收的情况下不会阻塞

相关题目

牛客网: 关于无缓冲和有冲突的channel,下面说法正确的是()[请着重理解该题目的解答]

select机制

select机制用于处理异步IO问题
select机制与switch语句类似, 运行时系统会自上而下的判断每个case中的IO接收或发送操作是否可以立即执行
select机制的最大一条限制是每个case块中的语句必须是面向channel的IO操作

考点

相关题目

牛客网: 关于select机制,下面说法正确的是()

类型转换与类型断言

考点

类型转换
	Type(expression)
类型断言
	expression.(Type): 类型断言中expression必须是接口(interface{})类型

相关题目

关于类型转化,下面语法正确的是()

值类型与引用类型

考点

golang中分为值类型和引用类型
值类型--int系列, float系列, bool, string, 数组和结构体--变量直接存储值,内存通常在栈中分配
引用类型--指针、slice、channel、interface、map、函数等--变量存储的是地址,该地址对应空间里存储真正的值,内存通常在堆中分配

相关题目

牛客网: 数组是一个值类型,这一说法是否正确。

切片

考点

切片定义的两种方式:
	直接定义:
		s := []int{1, 2, 3, 4, 5}	// 可以声明一个未指定大小的数组来定义切片,var identifier []type,切片不需要说明长度
	make函数定义:
		var slice1 []type = make([]type ,Len) 				// 使用make函数定义切片时,capacity不是必须的
		var slice1 []type = make([]T ,length, capacity)		// 使用make函数定义切片,同时指定length和capacity

相关题目

字符串

考点

Go语言中字符串是不可变的, 所以不能对字符串中某个字符单独赋值

相关题目

牛客网: 下面的程序的运行结果是xello,这一说法是否正确。

全局变量

考点

全局变量要定义在函数之外, 而在函数之外定义的变量必须用var定义

相关题目

定义一个包内全局字符串变量,下面语法正确的是

自定义类型

考点

除指针外, 可以给任何自定义类型添加相应的方法

相关题目

牛客网: 可以给任意类型添加相应的方法。这一说法是否正确。

变长参数

考点

func add(args ...int) int {}

...int--定义int类型的变长参数, 可传入整数序列, 整数slice; 传入slice时需要添加...表示传入为slice

相关题目

下面对add函数调用正确的是

自增自减

考点

Go中++, --:
	后置操作符, 必须跟在操作数后面
	没有返回值, 不能用于表达式

相关题目

关于变量的自增和自减操作,下面语句正确的是

cap函数

考点

cap()函数的作用:
	array--返回数组元素的个数
	slice--返回slice的容量
	channel--返回channel的buffer容量

cap()函数不支持map, map使用len()表示大小

相关题目

牛客网: 关于cap函数的适用类型,下面说法正确的是()

你可能感兴趣的:(Golang学习笔记)