Go语言中文网 为您找到相关结果 262

go匿名函数实现操作封装

/** * 使用匿名函数实现操作封装 * 将匿名函数作为 map 的键值,通过命令行参数动态调用匿名函数 * 运行命令 go run src/hh/main.go --skill=fly */ package main import ( "flag" "fmt" ) var skillParam = flag.String("skill", "", "skill to perform") func main() { flag.Parse() var skill = map[string]func(){ "fire": func() { fmt.Println("chicken fire") }, "run": func() { fmt.Println("soldier run") }, "f...阅读全文

博文 2019-12-19 11:34:13 huang_he_87

Go语言(二十一) 常见的模块使用

模块使用 执行系统shell命令 使用os/exec模块 package main import ( "fmt" "os/exec" ) func main() { var ( cmd *exec.Cmd err error ) cmd = exec.Command("/bin/bash","-c","echo hello") err = cmd.Run() if err != nil { fmt.Println(err) } fmt.Println(err) } 获取命令执行的返回结果 package main import ( "fmt" "os/exec" ) func main() { var ( cmd *exec.Cmd output []byte err error ) //生...阅读全文

博文 2020-06-01 15:33:17 wx5b285b48ed74e

Golang基础之Map

map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map的定义 Go语言中 map的定义语法如下: map[KeyType]ValueType 其中, KeyType:表示键的类型。 ValueType:表示键对应的值的类型。 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为: make(map[KeyType]ValueType, [cap]) 其中cap表示map的容量,该参数虽然不是必须的,但是我们应该在初始化map的时候就为其指定一个合适的容量。 map基本使用 map中的数据都是成对出现的,map的基本使用示例代码如下: func main() { scoreMap := make(map[stri...阅读全文

博文 2020-03-25 12:32:43 DevilRoshan

# golang 数据结构 2

golang 数据结构1 channel atomic sync.Mutex sync.WaitGroup sync.Pool sync.Map channel Go 教程系列笔记 Channel 通道 The way to go 协程间的通信2 基本用法 var ch chan int ch := make(chan int) ch := make(chan int, 2) // 带缓存 chan ch <- value // 给 channel 发送值 value := <- ch // 从 channel 接收值 // for range channel for value := range ch { } // 函数中使用 func run(ch chan int){} func ru...阅读全文

博文 2019-08-12 18:47:26 xfstart07

源码解读 Golang 的 sync.Map 实现原理

简介 Go 的内建 map 是不支持并发写操作的,原因是 map 写操作不是并发安全的,当你尝试多个 Goroutine 操作同一个 map,会产生报错:fatal error: concurrent map writes。 因此官方另外引入了 sync.Map 来满足并发编程中的应用。 sync.Map 的实现原理可概括为: 通过 read 和 dirty 两个字段将读写分离,读的数据存在只读字段 read 上,将最新写入的数据则存在 dirty 字段上 读取时会先查询 read,不存在再查询 dirty,写入时则只写入 dirty 读取 read 并不需要加锁,而读或写 dirty 都需要加锁 另外有 misses 字段来统计 read 被穿透的次数(被穿透指需要读 dirty 的情况)...阅读全文

博文 2020-03-23 13:32:43 张凯强

深入理解Golang之context

context是Go并发编程中常用到一种编程模式。本文将从为什么需要context,深入了解context的实现原理,以了解如何使用context。 作者:Turling_hu来源: 掘金 原文链接: https://juejin.im/post/5e5268... 前言 这篇文章将介绍Golang并发编程中常用到一种编程模式:context。本文将从为什么需要context出发,深入了解context的实现原理,以及了解如何使用context。 为什么需要context 在并发程序中,由于超时、取消操作或者一些异常情况,往往需要进行抢占操作或者中断后续操作。熟悉channel的朋友应该都见过使用done channel来处理此类问题。比如以下这个例子: func main() { mess...阅读全文

博文 2020-03-01 12:32:41 Kevin

数据结构和算法(Golang实现)(16)常见数据结构-字典

字典 我们翻阅书籍时,很多时候都要查找目录,然后定位到我们要的页数,比如我们查找某个英文单词时,会从英语字典里查看单词表目录,然后定位到词的那一页。 计算机中,也有这种需求。 一、字典 字典是存储键值对的数据结构,把一个键和一个值映射起来,一一映射,键不能重复。在某些教程中,这种结构可能称为符号表,关联数组或映射。我们暂且称它为字典,较好理解。 如: 键=>值 "cat"=>2 "dog"=>1 "hen"=>3 我们拿出键cat的值,就是2了。 Golang提供了这一数据结构:map,并且要求键的数据类型必须是可比较的,因为如果不可比较,就无法知道键是存在还是不存在。 Golang字典的一般的操作如下: package main import "fmt" func main() { // ...阅读全文

博文 2020-04-07 16:32:34 陈星星

3.2.8Golang的map

总目录:https://www.jianshu.com/p/e406a9bc93a9 Golang - 子目录:https://www.jianshu.com/p/8b3e5b2b4497 map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map的定义 语法: map[键数据类型]值数据类型 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。 语法: make(map[键数据类型]值数据类型, [容量]) map的基本使用 package main import "fmt" func main() { // 定义一个map 并初始化 长度最好在初始化时就设置好 scoreMap := make(map[str...阅读全文

博文 2020-03-17 23:32:46 寒暄_HX

Golang 复合数据类型:结构体

结构体的定义 结构体也是一种复合类型,通常使用带属性的结构体来表示一个现实中的实体。结构体也是值类型,因此可以通过使用 new 函数来创建。Go语言不是一门传统的面向对象的编程语言,因此 Go 中没有类的概念,也不支持类的面向对象概念。结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”,这些字段有以下特性: 字段拥有自己的类型和值; 字段名必须唯一; 字段的类型也可以是结构体,甚至是字段所在结构体的类型。 type Family struct { name string age int language string ... } type Family struct { name, language string //同一类型的变量可以...阅读全文

博文 2020-06-03 15:32:41 sunlingbot

如何在JavaScript中重命名对象键?

JavaScript不提供内置函数来重命名对象键,那么如何重命名对象键?下面本篇文章就来给大家介绍一下在JavaScript中重命名对象键的方法,希望对大家有所帮助。 在JavaScript中,对象用于存储各种数据的集合,是属性的集合;属性是一个“key:value”对。其中key(键)称为“属性名”,用于标识值。下面介绍重命名对象键的方法。方法一:通过简单的变量赋值来重命名对象在分配了一个或多个变量之后,我们将删除旧的键值对并打印新的键值对。语法:obj['New key'] = obj['old key'];注意:通过简单的变量赋值来重命名对象可以应用于多个键值对。例: 阅读全文

博文 2020-03-16 17:32:53 yanghs

源码解读 Golang 的 sync.Map 实现原理

简介 Go 的内建 map 是不支持并发写操作的,原因是 map 写操作不是并发安全的,当你尝试多个 Goroutine 操作同一个 map,会产生报错:fatal error: concurrent map writes。 因此官方另外引入了 sync.Map 来满足并发编程中的应用。 sync.Map 的实现原理可概括为: 通过 read 和 dirty 两个字段将读写分离,读的数据存在只读字段 read 上,将最新写入的数据则存在 dirty 字段上 读取时会先查询 read,不存在再查询 dirty,写入时则只写入 dirty 读取 read 并不需要加锁,而读或写 dirty 都需要加锁 另外有 misses 字段来统计 read 被穿透的次数(被穿透指需要读 dirty 的情况)...阅读全文

博文 2020-03-23 14:32:49 张凯强_zkqiang

源码解读 Golang 的 sync.Map 实现原理

简介 Go 的内建 map 是不支持并发写操作的,原因是 map 写操作不是并发安全的,当你尝试多个 Goroutine 操作同一个 map,会产生报错:fatal error: concurrent map writes。 因此官方另外引入了 sync.Map 来满足并发编程中的应用。 sync.Map 的实现原理可概括为: 通过 read 和 dirty 两个字段将读写分离,读的数据存在只读字段 read 上,将最新写入的数据则存在 dirty 字段上 读取时会先查询 read,不存在再查询 dirty,写入时则只写入 dirty 读取 read 并不需要加锁,而读或写 dirty 都需要加锁 另外有 misses 字段来统计 read 被穿透的次数(被穿透指需要读 dirty 的情况)...阅读全文

博文 2020-03-23 14:37:37 张凯强zkqiang