Golang基础学习
文章平均质量分 92
Lazyboy_Chen7
悲欢离合
展开
-
Golang 选项模式(Option模式)
Golang 选项模式(Option模式)一种用于golang函数参数优雅传递的设计模式原创 2019-11-28 17:22:06 · 11464 阅读 · 4 评论 -
Golang踩坑——判断map中是否有key
最近在实习,下班回去十点多了,再加上比较懒,快有两个月没写东西了。今天在开发一个模块的时候是接着上一个人的写的,好不容易各种配置写好了开始跑,发现他踩了一个很容易踩的坑。把bug抽出来单独写了个文件。package mainimport ( "log")type agent struct { id int str string}var m map[int]*age...原创 2019-08-08 17:34:20 · 5176 阅读 · 0 评论 -
Golang标准库学习——sort
package sortimport "sort"sort包中包含的文件打开sort包我们能看到下面这些文件这里先看最关键的sort.go。sort.gosort文件中一开始就是最关键的Interface接口,一个满足sort.Interface接口的类型可以被sort包的函数进行排序。type Interface interface { Len() int...原创 2019-05-15 23:37:20 · 400 阅读 · 0 评论 -
Golang标准库学习——strconv
package strconvimport "strconv"strconv包实现了基本数据类型和其字符串表示的相互转换。之前写惯了C++,to_string()之类的写惯了,现在换成golang了好几次直接顺手atoi然后报错。不习惯规不习惯,总的来说把方法放到包里这个想法还是很ok的。 strconv.Itoa()和strconv.Atoi()Itoa实现了in...原创 2019-05-20 19:19:06 · 1762 阅读 · 0 评论 -
Golang标准库学习—container/ring
container包中有三个数据结构:heap(堆)、list(链表)、ring(环)Package ringimport "container/ring"ring实现了环形链表的操作。环的尾部就是头部,所以每个元素实际上就可以代表自身的这个环。不需要像list一样保持list和element两个结构,只需要保持一个结构就可以。type Ring环形链表没有头尾;...原创 2019-03-07 21:20:17 · 667 阅读 · 0 评论 -
Golang标准库学习—container/heap
container包中有三个数据结构:heap(堆)、list(链表)、ring(环)Package heapimport "container/heap"heap包提供了对任意实现了heap.Interface接口的类型的堆操作。最小堆是具有“每个节点都是以其为根的子树中最小值”属性的树。最大堆相反。树的最小元素为其根元素,索引0的位置。最大堆相反。heap是常用的实...原创 2019-03-06 22:09:11 · 823 阅读 · 0 评论 -
Golang标准库学习—container/list
container包中有三个数据结构:heap(堆)、list(链表)、ring(环)Package listimport "container/list"list包实现了双向链表,要遍历一个链表:for e := l.Front(); e != nil; e = e.Next() { // do something with e.Value}type Eleme...原创 2019-03-05 18:28:51 · 820 阅读 · 0 评论 -
Golang标准库学习——strings(未完)
Package stringsimport "strings"strings包实现了用于操作字符串的简单函数。一、Contains、ContainsAny、ContainsRune// 判断s是否包含substrfunc Contains(s, substr string) bool { return Index(s, substr) >= 0}// 判断s是否...原创 2019-04-08 22:54:21 · 803 阅读 · 0 评论 -
Golang中 goroutine执行速度的问题
突然想到了之前一直没留意的for循环中开goroutine的执行顺序问题,就找了段代码试了试,试了几次后发现几个有意思的地方,我暂时没有精力往更深处挖掘,希望有golang大神能简单说一说这几个地方是怎么回事。代码:package main import "fmt"func Count(ch chan int) { fmt.Println("Count doing") c...原创 2019-04-14 13:55:05 · 848 阅读 · 0 评论 -
Golang学习——struct的一些事情
Golang中的struct还是有点意思的,相比于C++中的类型要好用很多。Golang的数据成员放到一个struct中,又为该struct配上相应的方法,这就形成了封装数据成员和方法的class。相比于C++,Golang没有继承,而是支持嵌套,以组合的形式完成相同的功能,这就使Golang的逻辑非常清晰。遇到的问题最近在写程序时碰到了一个小问题,让我困惑了一下。这里只是想判断...原创 2019-03-24 15:07:06 · 640 阅读 · 0 评论 -
Golang标准库学习——sync/atomic
package atomicimport "sync/atomic"atomic包提供了底层的原子级内存操作,对于同步算法的实现很有用。这些函数必须谨慎地保证正确使用。除了某些特殊的底层应用,使用通道或者sync包的函数/类型实现同步更好。应通过通信来共享内存,而不通过共享内存实现通信。相比于使用锁,在条件允许的情况下,使用原子操作的效率会更高atomic包能对一些类型...原创 2019-03-25 22:07:12 · 640 阅读 · 0 评论 -
Golang学习中遇到的问题
不断踩坑,持续更新。这里包含两个部分亲身经历:自己遇到的问题,包括踩的坑,模糊的知识点,不能瞬间想到的问题等等。 他人经验:看他人的博文发现的问题,会收在第二部分中,如果有一天想通了会放到第一部分。亲身经历:切片初始化 slice := make([]type, len) 用make创造切记len参数不能省略 切片append添加的是单个元素不是切片 ...原创 2019-03-12 10:39:07 · 621 阅读 · 0 评论 -
Golang—内存对齐
Golang是一种C家族的语言,关于内存对齐和C有大部分相通的地方。如果之前就对内存对齐有了解的话,很容易理解。先看一个例子吧package mainimport ( "fmt" "unsafe")type part struct { a bool b int32 c int8 d int64 e byte}func main() { part1 :=...原创 2019-03-15 18:42:15 · 1474 阅读 · 0 评论 -
Golang标准库学习—unsafe
Packge unsafeimport "unsafe"unsafe包提供了一些跳过go语言类型安全限制的操作。能够访问底层内存,使用unsafe函数可以提高访问对象的速度,但是这不是go语言推荐使用的,容易出现莫名其妙的问题,不利于扩展与维护。unsafe包中真正的代码只有五行type ArbitraryType inttype Pointer *ArbitraryType...原创 2019-03-15 17:35:57 · 428 阅读 · 0 评论