GO

1行Go代码实现反向代理的示例

暂且放下你的编程语言来瞻仰下我所见过的最棒的标准库。 为项目选择编程语言和挑选你最爱的球队不一样。应该从实用主义出发,根据特定的工作选择合适的工具。 在这篇文章中我会告诉你从何时开始并且为什么我认为 Go 语言如此闪耀,具体来说是它的标准库对于基本的网络编程来说显得非常稳固。更具体一点,我们将要编写一个反向代理程序。 Go 为此提供了很多,但真正支撑起它的在于这些低级的网络管道任务,没有更好的语言... »

golang中命令行库cobra的使用方法示例

简介 Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序。下面是Cobra使用的一个演示: Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra crea... »

我放弃Python转Go语言的9大理由(附优秀书籍推荐)

前言 Go大概2009年面世以来,已经8年了,也算是8年抗战。在这8年中,已经有很多公司开始使用Go语言开发自己的服务,甚至完全转向Go开发,也诞生了很多基于Go的服务和应用,比如Dokcer、k8s等,很多的大公司也在用,比如google(作为开发Go语言的公司,当仁不让)、Facebook、腾讯、百度、阿里、京东、小米以及360,当然除了以上提到的,还有很多公司也都开始尝试Golang,这其中... »

Windows环境下vscode-go安装笔记(不支持32位)

Windows环境下vscode-go安装笔记(不支持32位)

一、介绍 对于Visual Studio Code开发工具,有一款优秀的GoLang插件,它的主页为:https://github.com/microsoft/vscode-go 这款插件的特性包括: Colorization 代码着彩色 Completion Lists 代码自动完成(使用gocode) Snippets  代码片段 Quick Info 快速提示信息(使用godef)... »

Go 语言教程

Go 语言教程

Go 语言教程 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。... »

Go 语言范围(Range)

Go 语言范围(Range) Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。在数组和切片中它返回元素的索引和索引对应的值,在集合中返回 key-value 对。 实例 实例 package main import "fmt" func main() {     /... »

golang执行命令获取执行结果状态(推荐)

这几天在用golang写一个工具,要执行外部命令工具,而且还要将外部命令工具输出的日志也要输出出来。网上找了一下,资料很多,关键是执行的结果成功或失败状态没找到好的方法获取到。 刚开始想的是看错误日志,如果有错误日志,那么就是执行失败。测试的时候发现这样不行,发现有些时候会用error输出日志,但不一定就是执行失败。后来想用日志中的关键字匹配,因为有些命令执行成功或失败都是有关键字输出的,测试发现... »

golang之反射和断言的具体使用

1. 反射 反射这个概念绝大多数语言都有,比如Java,PHP之类,golang自然也不例外,反射其实程序能够自描述和自控制的一类机制。 比如,通过PHP的反射,你可以知道一个类有什么成员,有什么方法。而golang,也能够通过官方自带的reflect包来了解各种变量类型及其信息。 下面我们通过一个例子查看反射的基本用法。 话不多说,直接贴代码: package main import ( "fm... »

golang对etcd存取和数值监测的实现

golang对etcd存取和数值监测的实现

测试代码如下 package main import ( "fmt" "log" "time" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context" ) var ( dialTimeout = 5 * time.Second requestTimeout = 2 * time.Second endpoints = []string{"192.1... »

一百行Golang代码实现简单并发聊天室

一百行Golang代码实现简单并发聊天室

项目介绍:Golang100行代码实现高并发聊天室,其中实现的功能有:上下线广播,私聊,用户改名,超时强踢,在线用户检测等 在开始项目前,我们需要理解贯穿这整个项目的两个重要变量,若能理解这两个变量的使用,那么并发聊天室项目会变得手到擒来。第一个是onlinemap全局map,第二个是Message全局channel。 取名为onlinemap的全局map类型为map[string][client... »

Golang 使用http Client下载文件的实现方法

之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的。 看了下beego的实现主要是使用了io.copy函数,于是就深入的看了下实现原理,发现挺简单的,于是就根据io.copy原理实现的一个简单的下载器 //定义要下载的文件 var durl = "https://dl.google.com/go/... »

Go语言在Linux环境下输出彩色字符的方法

Go语言在Linux环境下输出彩色字符的方法

 Go语言要打印彩色字符与Linux终端输出彩色字符类似,以黑色背景高亮绿色字体为例: fmt.Printf("\n %c[1;40;32m%s%c[0m\n\n", 0x1B, "testPrintColor", 0x1B) 其中0x1B是标记,[开始定义颜色,1代表高亮,40代表黑色背景,32代表绿色前景,0代表恢复默认颜色。显示效果为: 下面代码遍历全部显示效果。 package ... »

golang中range在slice和map遍历中的注意事项

golang中range在slice和map遍历中的注意事项 package main import ( "fmt" ) func main() { slice := []int{0, 1, 2, 3} myMap := make(map[int]*int) for _,v :=range slice{ if v==1 { v=100 } } for k,v :=range slice{ fmt.... »

Golang 日期/时间包的使用详解

golang 的日期时间包:time 的使用方式。 time package 包含了 time.Time 时间对象 及 构建此时间对象的一些方法(time.Unix(), time.Parse()) golang 可精确到 nanosecond,故相应的函数返回值或参数都已纳秒为单位,我们可以借助time.ParseDuration(durationString string)友好的生成纳秒度量的... »

Go语言字符串高效拼接的实现

+号拼接 这种拼接最简单,也最容易被我们使用,因为它是不限编程语言的,比如Go语言有,Java也有,它们是+号运算符,在运行时计算的。 var s string s+="昵称"+":"+"志强1224"+"\n" s+="联系方式QQ"+":"+"354662600"+"\n" fmt.Println(s) fmt 拼接 这种拼接,借助于fmt.Sprint系列函数进行拼接,然后返回拼接的字符串。... »

golang解析域名的步骤全纪录

最近遇到了一个问题。 我们的kube-apiserver配置了OIDC认证,OIDC issuer是添加了dns server记录的,但由于某些原因,我需要覆盖掉dns server的解析,改用hostAlias的IP地址,但是实测发现总是走了DNS解析,虽然/etc/hosts文件已经添加了自定义的hosts记录。而那些没有在dns server注册的域名,还是可以通过 /etc/hosts 解... »

Go语言中的字符串处理方法示例详解

1 概述 字符串,string,一串固定长度的字符连接起来的字符集合。Go语言的字符串是使用UTF-8编码的。UTF-8是Unicode的实现方式之一。 Go语言原生支持字符串。使用双引号(“”)或反引号(“)定义。 双引号:””, 用于单行字符串。 反引号:“,用于定义多行字符串,内部会原样解析。 示例: // 单行 ... »

Golang获取当前时间代码

golang中时间相关操作,主要是用time包的函数,time中最主要又包含了time.Time这个对象。 1、获取当前时间      (1) currentTime:=time.Now()     //获取当前时间,类型是Go的时间类型Time   (2)     t1:=ti... »

详解Go hash算法的支持

详解Go hash算法的支持

散列函数(散列算法,又称哈希函数)是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。 随机生成 加密密钥需要尽可能的随机,以便生成的密钥很难再现。加密随机数生成器必须生成无法通过计算方法推算出(低于p<.05的概率)的输出。 散列函数 基本特性:如果两个散列值是不相同的(... »

解析Go 标准库 http.FileServer 实现静态文件服务

http.FileServer 方法属于标准库 net/http,返回一个使用 FileSystem 接口 root 提供文件访问服务的 HTTP 处理器。可以方便的实现静态文件服务器。 http.ListenAndServe(":8080", http.FileServer(http.Dir("/files/path"))) 访问 http://127.0.0.1:8080,即可看到类似 Ngi... »

golang中使用mongo的方法介绍

前言 笔者使用的mongo驱动是mgo, 这个使用的人比较多,文档也比较齐全 官网地址:http://labix.org/mgo 文档地址:https://godoc.org/labix.org/v2/mgo 源码地址:https://github.com/go-mgo/mgo 1. mgo包安装 go get gopkg.in/mgo.v2 但是貌似现在从gopkg.in下载不了,迂回一下,先从... »

golang基础之Gocurrency并发

goroutine只是由官方实现的超级”线程池”而已,每个实例4-5kb的栈内存占用和用于实现机制而大幅减少的创建和销毁开销。 并发不是并行(多CPU):  Concurrency Is Not Parallelism 并发主要由切换时间片来实现”同时”运行,并行则是直接利用多核实现多线程的运行,但Go可以设置使用核数,以发挥多核计算机的能... »

go语言学习之包和变量详解

go语言学习之包和变量详解

前言 本文主要介绍了关于go语言之包和变量的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 一、包的概念 包是go语言中不可缺少部分,在每个go源码的第一行进行定义,定义方式是:package “包名”,并且该名称是作为调用该包时候所使用的名称。 包的概念总结: 每个 Go 文件都属于且仅属于一个包。一个包可以由许多以 .go 为扩展名的源文件组... »

golang中for循环遍历channel时需要注意的问题详解

前言 for循环是Go语言唯一的循环结构,最近在做一个基于RabbitMQ的应用,由于官方的qos没有golang的版本,所以出了一点问题。 问题代码如下: _, ch, err := component.NewRabbitMQ() if err != nil { panic(err) } if err := ch.Qos(10, 0, true); err != nil { panic(err)... »

Go之interface的具体使用

浅显地了解了一下 Go,发现 Go 语法的设计非常简洁,易于理解。正应了 Go 语言之父 Rob Pike 说的那句“Less is more”—— 大道至简。 下面就具体的语法特性说说我自己的体会。 interface 概览 与通常以类型层次与继承为根基的面向对象设计(OOP)语言(如C++、Java)不同,Go 的核心思想就是组合(composition)。Go 进一步解耦了对象与操作,实现了... »

Page 1 of 16123»