Go-大道至简
文章平均质量分 89
Go 语言被称为“互联网时代的C语言”。Go 语言的风格类似于C语言。其语法在C语言的基础上进行了大幅的简化。
目前Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、游戏开发等领域。
琦彦
Find out who you are,and be that person.
展开
-
Goland嗖嗖的: 快捷键,自动生成代码等效率小技巧
Goland:快捷键,自动生成代码等效率小技巧原创 2022-10-02 21:49:41 · 7970 阅读 · 0 评论 -
如何将k8s.io/kubernetes包导入你的项目
如何将k8s.io/kubernetes包导入你的项目问题现象用例我有一个项目,在其中,导入的包如下所示:import ( "crypto/x509" "fmt" "io/ioutil" "log" "path/filepath" "github.com/spf13/cobra" "k8s.io/client-go/util/cert" "k8s.io/client-go/util/keyutil" "k8s.io/kubernetes/test/utils")资源文件翻译 2022-04-05 17:59:14 · 2450 阅读 · 0 评论 -
GO高阶: 调度器 GMP 原理与调度全分析
目录Golang的协程调度器原理及GMP设计思想?一、Golang“调度器”的由来?(1) 单进程时代不需要调度器(2)多进程/线程时代有了调度器需求(3)协程来提高CPU利用率(4)Go语言的协程goroutine(5)被废弃的goroutine调度器二、Goroutine调度器的GMP模型的设计思想(1)GMP模型(2)调度器的设计策略(3) go func() 调度流程(4)调度器的生命周期(5)可视化GMP编程三、Go调度器调度场景过程全解转载 2021-10-02 19:28:28 · 472 阅读 · 0 评论 -
Go基础:方法
目录1 方法是什么2 函数和方法的区别3 指针或值作为接收者4 方法和未导出字段5 内嵌类型的方法和继承6 如何在类型中嵌入功能7 多重继承8 通用方法和方法命名9 和其他面向对象语言比较 Go 的类型和方法备注问题 1问题 21 方法是什么在 Go 语言中,结构体就像是类的一种简化形式,那么面向对象程序员可能会问:类的方法在哪里呢?在 Go 中有一个概念,它和方法有着同样的名字,并且大体上意思相同:Go 方法是作用在接收者(receiver)上的转载 2021-10-01 19:47:34 · 1846 阅读 · 0 评论 -
Go基础:入门学习资料
Go入门文档《Go 入门指南》 | Go 技术论坛《Go 入门指南》 | Go 技术论坛我们致力于为 Golang / Go 语言开发者提供一个分享创造、结识伙伴、协同互助的中文论坛,由 Golang / Go 语言爱好者维护的高品质 Golang / Go 语言中国知识社区。https://learnku.com/docs/the-way-to-goGo 语言设计与实现 | Go 语言设计与实现https://draveness.me/golang/A Tour Of.原创 2021-09-21 09:27:43 · 1350 阅读 · 0 评论 -
Go基础:路径、文件名和包名的关系
Go 包的概念把相同的功能放到一个目录,称之为包 包可以被其他的包引用 main包用来生成可执行文件,每个程序只有一个main包 包可以提高代码的可复用性Go 包 的特征一个文件夹下只能有一个package。import后面的其实是GOPATH开始的相对目录路径,包括最后一段。但由于一个目录下只能有一个package,所以import一个路径就等于是import了这个路径下的包。 注意,这里指的是“直接包含”的go文件。如果有子目录,那么子目录的父目录是完全两个包。 比如你实现了..原创 2021-09-21 12:00:20 · 3092 阅读 · 0 评论 -
Go:包管理工具GOPATH、vendor、dep 、go module
Go包管理工具:前言Golang一直存在一个被人诟病的问题是缺少一个官方的包依赖管理工具。从我个人的角度上来看存在两个问题:GOPATH特性对于多工程的情况下,支持不算友好。 GOPATH无法对依赖包进行有效的版本管理,没有任何地方能够表明依赖包的具体版本号,无法简单清晰获取到有效的依赖包版本信息等。GOPATH在 go mod 出现之前,所有的 Go 项目都需要放在同一个工...原创 2020-02-13 17:05:56 · 16182 阅读 · 0 评论 -
GOPROXY:解决 go get golang.org/x 包失败
问题现象当我们使用go get、go install、go mod等命令时,会自动下载相应的包或依赖包。但由于众所周知的原因,类似于golang.org/x/...的包会出现下载失败的情况。如下所示:package golang.org/x/tools/cmd/goimports/...: unrecognized import path "golang.org/x/tools/...原创 2020-02-10 22:10:57 · 111855 阅读 · 6 评论 -
Go1.13:使用go mod 管理依赖, 提示cannot find module providing package或cannot find main module
问题现象编译go程序的时候报错:GOROOT=D:\go\GoSDK #gosetupGOPATH=D:\hc\workspace\fly\go\src\github.com\learngo;D:\hc\workspace\fly\go #gosetupD:\go\GoSDK\bin\go.exe build -o C:\Users\FLY\AppData\Local\Temp\__...原创 2020-02-13 17:27:42 · 39229 阅读 · 9 评论 -
Go基础:下划线“_”、变量和常量、数组、slice
目录前言:Go语言的设计初衷Go语言很特别Go语言的主要特征GO概览Go基础Go语言声明下划线(很特殊)变量声明常量声明数组切片Slice前言:Go语言的设计初衷针对其他语言的痛点进行设计 并加入并发编程 为大数据、微服务、并发而生的通用编程语言Go语言很特别没有“对象”,没有继承多态、类等,没有泛型,没有try/cat...原创 2020-02-08 18:12:37 · 18701 阅读 · 0 评论 -
Go基础:流程控制-if、switch、select、for
目录条件语句if条件语句switchType Switch条件语句selectselect 语句的语法:select 典型用法1.超时判断2.退出3.判断channel是否阻塞循环语句for条件语句if条件语句if • 可省略条件表达式括号。 • 持初始化语句,可定义代码块局部变量。 • 代码块左括号必须在条件表达式尾...原创 2020-02-19 22:10:28 · 4250 阅读 · 0 评论 -
Go基础:接口类型、接口嵌套、空接口、类型判断
1. 接口接口(interface)定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。1.1. 接口1.1.1. 接口类型在Go语言中接口(interface)是一种类型,一种抽象的类型。interface是一组method的集合,是duck-type programming的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。为了保护你的Go语言职业生涯,请牢记接口(i原创 2020-05-10 08:46:51 · 1257 阅读 · 0 评论 -
Go基础:指针、Map、结构体
指针Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针。要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。指针地址和指针类型Go语言中的指针操作非常简单,只需要记住两个符号:&(取地址)和*(根据地址取值)。每个...原创 2020-02-17 17:51:35 · 5146 阅读 · 0 评论 -
Go基础:格式化输出--Printf、Sprintf、Fprintf
目录Printf、Sprintf、Fprintf区别格式化输出示例Printf详解格式字符串旗标宽度和精度arg 索引 动词通用动词布尔型整型浮点型和复数型字符串或字节切片指针类型复合类型Printf、Sprintf、Fprintf区别Print: 输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v) fmt.Print(str)Println: 输出到控制台并换行 ...原创 2020-05-23 16:21:28 · 11840 阅读 · 1 评论 -
Go基础:range、循环控制Goto、Break、Continue
rangeGolang range类似迭代器操作,返回 (索引, 值) 或 (键, 值)。for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环。格式如下:for key, value := range oldMap { newMap[key] = value} 1st value 2nd value s...原创 2020-02-22 09:35:47 · 3735 阅读 · 0 评论 -
Go基础:channel、定时器、select、锁、sync、atomic
ChannelgoroutineChannel单纯地将函数并发执行是没有意义的。函数与函数间需要交换数据才能体现并发执行函数的意义。虽然可以使用共享内存进行数据交换,但是共享内存在不同的goroutine中容易发生竞态问题。为了保证数据交换的正确性,必须使用互斥量对内存进行加锁,这种做法势必造成性能问题。Go语言的并发模型是CSP(Communicating S...原创 2020-03-08 18:43:28 · 1237 阅读 · 0 评论 -
Go基础:函数、闭包、递归
函数GO函数特点:无需声明原型。 支持不定 变参。 返回值类型写在最后面,支持多返回值。 支持命名返回参数。 支持匿名函数和闭包。 函数也是一种类型,一个函数可以赋值给变量。 不支持 嵌套 (nested) 一个包不能有两个名字一样的函数。 不支持 重载 (overload) 不支持 默认参数 (default parameter)、可选参数 参数传递:无论是值传递...原创 2020-02-23 17:57:27 · 1051 阅读 · 0 评论 -
Go基础:指针地址、指针类型、多重指针、指针运算
目录到底什么是指针呢?指针指针地址和指针类型指针取值指针变量初始化指针运算符多重指针指针运算到底什么是指针呢?内存就是一系列有序列号的存储单元,变量就是编译器为内存地址分配的昵称,那么指针是什么呢?指针就是一个指向另一个内存地址变量的值指针指向变量的内存地址,指针就像该变量值的内存地址一样我们来看一个代码片段func main() {...原创 2020-05-08 12:15:53 · 3473 阅读 · 0 评论 -
Go基础:goroutine使用、调度、runtime包
并发编程前言进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。 B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 C.一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。并发和并行 A. 多线程程序在一个核的cpu上运行,就是并发。...原创 2020-03-07 18:47:57 · 4787 阅读 · 0 评论 -
Go基础:如何做单元测试和基准测试
目录1. 单元测试1.1. go test工具1.2. 测试函数1.2.1. 测试函数的格式1.2.2. 测试函数示例1.3. 测试组1.4. 子测试1.5. 测试覆盖率1.6. 基准测试1.6.1. 基准测试函数格式1.6.2. 基准测试示例1.6.3. 性能比较函数1.6.4. 重置时间1.6.5. 并行测试1.7. Setup与Te...原创 2020-05-03 19:56:22 · 1440 阅读 · 0 评论 -
Go基础:常见的json包--encoding/json、easyjson、ffjson、json-iterator/go
本文对常见的json包做一些介绍,方便快速入门。每一小节均有示例说明。大家在实际开发中可以选择适合自己的json包。encoding/jsonencoding/json是官方提供的标准json, 实现RFC 7159中定义的JSON编码和解码。 使用的时候需要预定义struct,原理是通过reflection和interface来完成工作, 性能低。常用的接口:func M...转载 2020-05-07 18:35:31 · 4151 阅读 · 0 评论 -
Go基础:开发中常见错误总结
1.1. 前言Go 是一门简单有趣的编程语言,与其他语言一样,在使用时不免会遇到很多坑,不过它们大多不是 Go 本身的设计缺陷。如果你刚从其他语言转到 Go,那这篇文章里的坑多半会踩到。如果花时间学习官方 doc、wiki、讨论邮件列表、 Rob Pike 的大量文章以及 Go 的源码,会发现这篇文章中的坑是很常见的,新手跳过这些坑,能减少大量调试代码的时间。1.1.1. 初级篇:1-...转载 2020-05-04 15:06:51 · 2529 阅读 · 7 评论 -
GoLand:设置gofmt与goimports,保存时自动格式化代码
GoLand也支持在保存代码时,自动调用gofmt和goimports来自动格式化代码。在最新版的GoLand(2019.3)中,是通过File Watchers插件来实现此功能的。在此介绍一下GoLand中如何设置:首先,得保证安装了一个叫做”File Watchers”的插件,并设置为启用状态:然后,直接在Tools -> File Watchers中,添...原创 2020-02-10 21:54:49 · 24217 阅读 · 2 评论