Go 每日一库之 log

简介 在日常开发中,日志是必不可少的功能。虽然有时可以用fmt库输出一些信息,但是灵活性不够。Go 标准库提供了一个日志库log。本文介绍log库的使用。 快速使用 log是 Go 标准库提供的,不需要另外安装。可直接使用: package main import ( "log" ) type User struct { Name string Age int } func main() { u := User{ Name: "dj", Age: 18, } log.Printf("%s log...阅读全文

Segmentfault 2020-02-12 23:32:32 darjun

16.Go语言标准库之文件操作

1.打开和关闭文件 os.Open()函数能够打开一个文件,返回一个*File和一个err。 对得到的文件实例调用close()方法能关闭文件。 package main import ( "fmt" "os" ) func main() { file,err := os.Open("main.go") if err != nil{ fmt.Println("open file failed!err:",err) return } //为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句...阅读全文

51CTO博客 2020-02-07 13:09:33 DevOperater

【数据结构原理与应用(Golang描述)】② 链表

_ _ _ _ _ _ _ | (_) | | | | | (_) | | | |_ _ __ | | _____ __| | | |_ ___| |_ | | | '_ \| |/ / _ \/ _` | | | / __| __| | | | | | | < __/ (_| | | | \__ \ |_ |_|_|_| |_|_|\_\___|\__,_| |_|_|___/\__| 1.1 原理 链表与数组都非常基础也非常常用,从底层数据结构上看,数组需要一块连续的内存空间来存储数据,而链...阅读全文

Segmentfault 2020-02-12 22:32:32 vouv

Go中必须谈论的四个迷点

很多熟悉Go的程序员们都会说到Go是一门很简单的语言,话虽如此,但实际上Go的简单是基于复杂底层的极简包装。 Go在很多地方均做了“隐式”的转换,这也就导致了很多迷惑点,本文总结了Go开发中几个令人迷惑的地方,如有不当之处请指正。 nil究竟是什么 首先明确一点:nil是值而非类型。nil值只能赋值给slice、map、chan、interface和指针。 在Go中,任何类型都会有一个初始值。数值类型的初始值为0,slice、map、chan、interface和指针类型的初始值为nil,对于n...阅读全文

Segmentfault 2020-02-12 22:32:32 shaoyuan1943

关于Go Modules,看这一篇文章就够了

Go 1.13版本之后新的包管理器Modules趋于成熟,目前越来越多的开源项目已经支持Go Modules,典型的如etcd。Go具有相当长的包管理工具变迁史,各种包管理工具层出不穷,究其原因,还是官方没有实现足够好用包管理工具。本文不对部分基础知识做详解,主要重点是Go Modules,本文来源:[https://roberto.selbach.ca/in...]() GOPATH的缺陷 几乎所有的包管理工具在Go 1.11版本之前都绕不开GOPATH这个环境变量。GOPATH主要用来放置项...阅读全文

Segmentfault 2020-02-12 19:32:33 shaoyuan1943

golang快速入门[2.1]-go语言开发环境配置-windows

golang快速入门[2.1]-go语言开发环境配置-windows接下来,我们将讲解在windows、linux、macos三大平台上配置go语言的开发环境。windows安装Go语言开发包配置go语言的开发环境的第一步是要在go官网下载页面下载开发包windows需要下载msi后缀文件,msi是windows下的安装包文件格式,用于安装,存储和删除程序这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包在上图所示页面中向下滚动即可找...阅读全文

51CTO博客 2020-02-06 20:19:26 jonson_jackson

分布式负载均衡算法之亲和性轮询原理

无论是在早期的负载均衡器中,还是当前微服务基于客户端的负载均衡中,都有一个最基础的轮询算法,即将请求平均分布给多台机器,今天聊聊在此基础上, kube proxy是如何实现亲和性轮询的核心数据结构. 了解亲和性策略实现,失败重试等机制 1. 基础筑基 1.1 Service与Endpoints Service和Endpoint是kubernetes中的概念,其中Service代表一个服务,后面通常会对应一堆pod,因为pod的ip并不是固定的,用Servicel来提供后端一组pod的统一访问入口...阅读全文

掘金 2020年02月06日 8小时_2020

Visual Code+Golang手工安装必要依赖

微软发布的visual code studio是款简单易用的轻量级IDE,支持众多语言,包括Go语言。通过extensions:install extensions安装了Go语言支持插件后,还需要安装gopls、gocode等依赖,因为golang.org无法直接访问,所以有时需要通过GitHub下载后手工安装依赖。简单如下:#安装guru和gorename git clone https://github.com/golang/tools.git "%GOPATH%\src\golang.or...阅读全文

简书 2020-02-07 07:32:41 ponder4

golang 正则

. 匹配多行,匹配包括\n re := regexp.MustCompile(`(?s)i(.*?)u`) fmt.Println(re.MatchString("i\nlove\nu")) // true 忽略大小写 re := regexp.MustCompile(`(?i)love`) fmt.Println(re.MatchString("i\nLOVE\nu")) // true 多行使用^ $匹配行首和行尾 re := regexp.MustCompile(`(?m)^love$`)...阅读全文

简书 2020-02-07 07:32:41 小龙虾0o0

13.Go语言标准库之time包

1.time包 time包提供了时间的系那是和测量用的函数。日历的计算采用的是公历。 1.1时间类型 time.Time类型表示时间。我们可以通过time.Now()函数获取当前的事件对象,然后获取时间对象的年月日时分秒等信息。 package main import ( "fmt" "time" ) func main() { now := time.Now() //获取当前时间 fmt.Printf("current time:%v\n", now) year := now.Year() /...阅读全文

51CTO博客 2020-02-06 19:59:51 DevOperater

15.Go语言标准库之log介绍

1.log 1.1使用Logger log包定义了Logger类型,该类型提供了一些格式化输出的方法。 本包也提供了一个预定义的"标准"logger,可以通过调用Print系列(Print|Printf|Println)、Fatal系列(Fatal|Fatalf|fatalln)和Panic系列(Panic|Panicf|PanicLn)来使用,比自行创建一个logger对象更容易使用。 例如:我们可以像下面的代码一样,直接通过log包来调用上岸提到的方法,默认它们会把日志信息大隐刀终端界面。 ...阅读全文

51CTO博客 2020-02-06 22:36:23 DevOperater

14.Go语言标准库flag基本使用

Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 1.os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数。 os.Args十一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。 package main import ( "fmt" "os" ) func main() { //os.Args是一个[]string if len(os.Args)>0{ for index,arg := ...阅读全文

51CTO博客 2020-02-06 21:06:50 DevOperater

Go解密:数组、切片

最近在翻阅Go部分源代码,略有涉及到数组(array)和切片(slice)的实现,本文出自Arrays, slices (and strings): The mechanics of 'append'(https://blog.golang.org/slices) 的中文翻译版本,我并没有完全按照原文翻译,部分内容我重新做了解释以及加入个人理解,还有部分内容我做了适当的删除和简化,如果不当之处多多指正。 ·介绍 ·数组 ·Slice:Slice Header ·函数传递Slice ·Slice ...阅读全文

Segmentfault 2020-02-12 19:32:32 shaoyuan1943

Go语言五种变量创建的方法

对于只有 Python 语言经验的朋友,也许会不太理解声明这个词,在 Python 中直接拿来就用,也不用声明类型啥的。 Go 语言是静态类型语言,由于编译时,编译器会检查变量的类型,所以要求所有的变量都要有明确的类型。 变量在使用前,需要先声明。声明类型,就约定了你这个变量只能赋该类型的值。 声明一般有以下四种方法,其中前面两种同样也可用于定义常量,只需把关键字 var 变成 const 即可。 第一种 :一行声明一个变量 var <name> <type> 其中 var 是关键字(固定不变)...阅读全文

Segmentfault 2020-02-12 10:32:33 Python编程时光

13.Go语言标准库之time包

1.time包 time包提供了时间的系那是和测量用的函数。日历的计算采用的是公历。 1.1时间类型 time.Time类型表示时间。我们可以通过time.Now()函数获取当前的事件对象,然后获取时间对象的年月日时分秒等信息。 package main import ( "fmt" "time" ) func main() { now := time.Now() //获取当前时间 fmt.Printf("current time:%v\n", now) year := now.Year() /...阅读全文

51CTO博客 2020-02-06 19:59:46 DevOperater

12.Go语言标准库之fmt

1.fmt fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。 1.1向外输出 1.1.1Print Print系列函数会将内容输出到系统的标准输出,区别在于 Print函数直接输出内容, Printf函数支持格式化输出字符串, Println函数会在输出内容的结尾添加一个换行符。 func Print(a ...interface{}) (n int, err error) func Printf(format string, a .....阅读全文

51CTO博客 2020-02-06 15:36:59 DevOperater

golang快速入门[1]-go语言导论

# golang快速入门[1]-go语言导论## 声明* 这是一套帮助初学者从0到1学习go语言的开源教程,致力于打造最完整、最强悍、最有深度的Go语言学习体系* 我希望这套课程能够涵盖Go语言的所有体系、并致力于用大量的案例来诠释其用法* 鉴于作者水平有限,真诚地希望能够集所有人的智慧,完善此项目,链接附后## 简介* Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言* Go的最初目标是消除Google软件开发的缓慢性和笨拙性,从而使流程...阅读全文

简书 2020-02-06 20:32:43 唯识相链2