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} ...阅读全文

阅读:175264 评论:15

Go 语言Map(集合)

Go 语言Map(集合)Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。定义 Map可以使用内建函数 make 也可以使用 map 关键字来定义 Map:/* 声明变量,默认 map 是 nil */ var map_variable map[key_data_type...阅读全文

阅读:3189 评论:0

Go中的下划线

1.下划线在import中 在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意,故百度而解之。 import 下划线(如:import _ hello/imp)的作用:当导入一个包时,该包下的文件里所有init()函数都会被执行,然而,有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。这个时候就可以使用 import _ 引用该包。即使用【import _ 包路径】只是引用该包,仅仅是为了调...阅读全文

2016-01-07 14:00 wanglei9876
阅读:13644 评论:0

Go实现线程池

本文通过代码讲解如何实现一个线程池。代码及注释如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package main import "fmt" import "time" //这个是工作线程,处理具体的业务逻辑,将jobs中的任务取出,处理后将处理结果放置在results中。 func worker(id int, jobs <-c...阅读全文

阅读:8674 评论:1

对Golang interface的理解

理解golang的interface主要在于以下两点: interface是方法的集合 interface是一种类型 简单示例 package main import "fmt" type Animal interface { Speak() string } type Cat struct{} func (c Cat) Speak() string { return "cat" } type Dog struct{} func (d Dog) Speak() string { return "...阅读全文

阅读:22539 评论:4

Go 1.9 sync.Map揭秘

本文为转载,原文链接 在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个锁,封装成一个新的struct或者单独使用锁都可以。 本文带你深入到sync.Map的具体实现中,看看为了增加一个功能,代码是如何变的复杂的,以及作者在实现sync.Map的一些思想。 有并发问题的map 官方的faq已经提到内建的map不是...阅读全文

2017-07-30 01:05:06 Kotexy
阅读:16253 评论:0

# Go 1.9 新特性

Go1.9于2017年8月24日正式发布,新版本的Go有一些新变化:标准库,运行时,以及新的工具。在这个版本中,Go团队主要的工作都是在运行时的改进以及一些工具链的开发中。虽然这些变化虽然不够令人激动,但是这的确是一个很棒的更新。 Type alias 类型别名是这个版本中最重要的变化,有了类型别名之后,能够让开发者更加便利地实现渐进升级。一个典型的类型别名可以通过如下方式声明: type T1 = T2 如此一来,T1就是T2的一个别名了,实际上,byte类型就是uint8的一个别名。type...阅读全文

2017-08-25 11:34:49 terasum
阅读:5062 评论:0

使用Go写一个简易的MVC的Web框架

# Bingo bingo是一个基于go语言的轻量级API框架,专注构建restfulAPI GitHub地址:[silsuer/bingo](https://github.com/silsuer/bingo) ## 目录结构 - app 放置与网站相关代码 - core 放置框架核心代码a - vendor 放置第三方库,使用glide管理第三方库 - public 放置html代码 ## 开发过程 go的net包极其好用,用它开发框架也是极...阅读全文

2018-04-17 10:10:23 silsuer
阅读:10895 评论:5

Go 中的 init 函数

main 标识符是随处可见的,每一个 Go 程序都是从一个叫 main 的包中的 main 函数开始的,当 main 函数返回时,程序执行结束。 init 函数也扮演着特殊的角色,接下来我们将描述下 init 函数的属性并介绍下怎么使用它们。 init 函数在包级别被定义,主要用于: - 初始化那些不能被初始化表达式完成初始化的变量 - 检查或者修复程序的状态 - 注册 - 仅执行一次的计算 - 更多其它场合 除了下面将要讨论到的一些差异外,你还可以在正则函数中放置任何...阅读全文

2018-07-28 22:25:25 flexiwind
阅读:13224 评论:1

理解 golang 中的 context(上下文) 包

![](https://raw.githubusercontent.com/studygolang/gctt-images/master/understanding-the-context-package-in-golang/0_exTPQ4ppfrdjuXcR.jpg) Go 中的 context 包在与 API 和慢处理交互时可以派上用场,特别是在生产级的 Web 服务中。在这些场景中,您可能想要通知所有的 goroutine 停止运行并返回。这是一个基本教程,介绍如何在项目中使用它以...阅读全文

2018-07-29 00:20:23 themoonbear
阅读:38081 评论:3