golang的select典型用法

golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。 示例: ch1 := make (chan int, 1) ch2 := make (chan int, 1) ... select { case <-ch1: fmt.Println("ch1 pop one element") case <-ch2: fmt.Println("ch2 pop one element") } 注意到 selec...阅读全文

阅读:17248 评论:1

golang fmt格式“占位符”

golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} ...阅读全文

阅读:175260 评论:15

golang fmt格式“占位符”

本文为转发,原文地址 golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan} %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:...阅读全文

2017.07.06 17:06 动物园园长熊熊酱
阅读:2100 评论:0

Golang sync.WaitGroup的用法

0x01 介绍经常会看到以下了代码: 12345678910111213package mainimport ( "fmt" "time")func main(){ for i := 0; i < 100 ; i++{ go fmt.Println(i) } time.Sleep(time.Second)} 主线程为了等待goroutine都运行完毕,不得不在程序的末尾使用time.Sleep() 来睡眠一段时间,等待其他线程充分运行。对于简单的代码,100个for循环可以在1秒之内运行完毕,t...阅读全文

2018-03-01 00:00 马谦的博客
阅读:96106 评论:2

Golang html encoding解析

自动解析html页面的编码格式: 需要依赖 golang.org/x/text 和 golang.org/x/net 这两个外部库 package main import ( "net/http" "io/ioutil" "fmt" "golang.org/x/text/transform" "io" "golang.org/x/text/encoding" "bufio" "golang.org/x/net/html/charset" ) // encoding determine for h...阅读全文

2018-07-28 13:53 vincenshen
阅读:4025 评论:0

浅谈GoLang协程

GoLang协程 学习golang也有一段时间了,这里讲一下自己对golang协程的使用理解,golang很多人都知道,毕竟有个好爹Google,提起golang和其它语言最大区别莫过于goroutine, 也就是go的协程,先来一个demo package main func say(s string) { for i := 0; i < 5; i++ { println(s) } } func main() { go say("Hello") go say("World") } go 启动协...阅读全文

2018.08.23 13:51 Anomaly
阅读:1701 评论:0

Go 语言 HTTP 请求超时入门

在分布式系统中,超时是基本可靠性概念之一。就像这条 [tweet](https://twitter.com/copyconstruct/status/1025241837034860544) 中提到的,它可以缓和分布式系统中不可避免出现的失败所带来的影响。 ## 问题 > 如何条件性地模拟 504 http.StatusGatewayTimeout 响应。 当尝试在 [zalando/skipper](https://github.com/zalando/skipper/iss...阅读全文

2018-08-24 12:09:42 snowInPluto
阅读:16777 评论:0

golang面试题整理

golang面试题整理 1、go的调度 2、go struct能不能比较 因为是强类型语言,所以不同类型的结构不能作比较,但是同一类型的实例值是可以比较的,实例不可以比较,因为是指针类型 3、go defer(for defer),先进后出,后进先出 func b() { for i := 0; i < 4; i++ { defer fmt.Print(i) } } 4、select可以用于什么,常用语gorotine的完美退出 golang 的 select 就是监听 IO 操作,当 IO 操...阅读全文

2019.01.18 23:06 yongfutian
阅读:56366 评论:5

go标准库(net/url)阅读

go标准库(net/url)阅读 url 介绍 问题1: 什么是url?当我们使用搜索引擎搜索东西的,我们第一步先在浏览器的地址栏里输入 google.com, www.google.com, http://www.google.com。我们在地址栏里输入的东西就是URL。URL 又叫统一资源定位符, 用于定位我们要访问的文档或者其他资源。 问题2: URL有什么样的格式?scheme://[userinfo]@[host]:[port]/path?key1=value1&key2=value2...阅读全文

2019-04-25 16:34:48 今生路人甲
阅读:2901 评论:0

golang-浅谈goroutine

前言 相信听说go这门语言的同学都知道go在并发方面相对其它语言而言更突出,并发是所有的语言都有的功能,而为什么go相对较好,它究竟哪里好,底层的实现是怎么样的? 基于这些疑惑并为了对goroutine有近一步了解,近期参考相关的资料,并在此对goroutine一些相关的知识做个总结,希望本篇文章能有大家有所帮助。 基本概念 在开始认识goroutine之前,我们需要对以下一些知识点有个基本了解 1.进程、线程、协程 我们知道在操作系统中能够用进程和线程进行并发编程,但进程和线程存在着什么差异呢...阅读全文

阅读:980 评论:0

Go 的包与编译时的依赖包查找机制

包机制 同一目录下只能存在一个包;若同一目录下存在多个包,该目录被别的源文件导入时编译时会报错,不可同一路径导入两个包。 目录和目录下源文件的包命名可以不同,目录被导入时只是提供包的路径而已;若目录名称和目录下包名称不同,当目录被导入时不必为包起别名即可在下文中使用包,当然,使用方式不是以目录名为前缀,而是以目录下的包名为前缀,不过这会导致读代码时不知道该包是来自哪个路径。所以一般规范的写法是保持目录和目录下的包名称相同。 不同目录下若存在相同名称的包,若在一个源文件中需同时导入使用这些包,首先...阅读全文

2019-08-19 21:32:34 Xavier
阅读:3878 评论:0

说一说go mod

[toc] 说一说go mod 写在前面,我们要切换到go mod吗 go mod是官方力推的go模块依赖管理的工具,有官方的背书,肯定是要用的。go1.13已经默认支持了,所以迟早要切到go mod, 势不可挡。 go mod什么 go mod能管理的依赖包的版本,能保证在不同地方构建,获得的依赖模块是一致的。 没有go mod之前如何管理包依赖 没有go mod之前,有go deps, vendor等方法来解决。 go mod如何工作 go 1.11通过设置环境变量GO111MODULE来决...阅读全文

2019.10.19 00:02:29 aside section . 等
阅读:11320 评论:0

【golang】iris项目示例,基于AJAX的简易聊天室

demo-chatroom 项目地址https://github.com/JabinGP/demo-chatroom,对你有帮助的话请多多star go+iris+jwt+mysql+gorm+viper,iris项目实战简易聊天室,登录、注册、私聊、群聊。 项目启动 git clone https://github.com/JabinGP/demo-chatroom.git cd demo-chatroom // 复制config.toml.example 为 config.toml 并填写数...阅读全文

阅读:1687 评论:0

自学转行至程序员经验分享

这是本人真实的转行经历,其实早就想整理出一篇文章了,无奈前几天工作任务繁重,自己可支配时间较少。发这篇文章的目的,也是给大家提供一些参考,避免一些坑。文章内的观点只代表我个人的看法,不绝对。如果有其他的问题,欢迎在文章的评论区一起讨论。:) 背景介绍   我先介绍一下我自己,以及我是如何萌生转行至程序员的这个想法的。   我是18年毕业于某985的机械设计制造及其自动化专业,了解这个专业的应该都知道这是个大坑。如果读研的话,会好很多。而我在校学习期间整天只知道玩,学习成绩倒数,临近毕业也不想考研...阅读全文

2020-06-02 07:32:35 SyntaxError
阅读:3240 评论:2

使用Golang在数秒内读取16GB的文件

By Ohm Patel 当今世界的任何计算机系统每天都会生成大量的日志或数据。随着系统的增长,将调试数据存储到数据库中是不可行的,因为它们是不可变的,而且只用于分析和故障解决目的。因此,组织倾向于将其存储在文件中,这些文件驻留在本地磁盘存储中。 我们将使用Golang从16 GB的.txt或.log文件中提取数百万行日志。 Lets Code…! 开始编码...! 让我们先打开文件。我们将使用标准的Go os.File用于任何文件IO。 f, err := os.Open(fileName) ...阅读全文

2020-11-29 09:32:38 颍水书生
阅读:712 评论:0

在vscode中go编码发生的问题整理

引言 使用VsCode进行Go程序开发,我们肯定会碰到一些问题,这些问题有些是IDE的配置问题,有些是下载包的版本不一致问题,本文主要针对在开发过程中碰到的问题做一个简单的回顾和整理。 前期准备,必看 在进行问题纠错前,先确保自己正确下载了golang的官方工具集go-tool,如果不确定,就跟着我的步骤操作一遍,可能操作后,你的问题就解决了。 1、配置golang的源。 go env -w GOPROXY=https://goproxy.cn,direct 然后我们进行golang工具的默认工...阅读全文

2021-03-18 00:32:58 HapplyFox
阅读:834 评论:0