golang
文章平均质量分 58
golang学习中,记录知识点
nukki
这个作者很懒,什么都没留下…
展开
-
设计模式(Go)
创建型模式 单例模式 单例模式保证了实例的全局唯一性,而且只被初始化一次,所以比较适合全局共享一个实例,且只需要被初始化一次的场景,例如数据库实例、全局配置、全局任务池等。 单例模式又分为饿汉方式和懒汉方式。饿汉方式指全局的单例实例在包被加载时创建,而懒汉方式指全局的单例实例在第一次被使用时创建。 饿汉式 type singleton struct { } var ins *singleton = &singleton{} func GetInsOr() *singleton { re原创 2021-10-26 19:15:00 · 143 阅读 · 0 评论 -
channel知识点总结
channel 创建方式: ch := make(chan int, 10) 后面的数字代表缓冲队列的容量,如果容量为0则代表非缓冲通道 channel类型的值本身就是并发安全的,一个channel就是一个先进先出的队列。 常用操作 for - range遍历 需要不断从channel中读取数据,当channel关闭时,for循环自动退出,这样一来可以防止读取已关闭channel(读取已关闭channel取到的值为存储数据类型的零值) func main() { sign := make(chan in原创 2021-10-12 14:31:54 · 1739 阅读 · 0 评论 -
LeetCode题目:两数之和 解题思路及代码实现(golang/Java)
题目: 序号:1 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 思路:暴力法或者使用哈希表 golang实现: package main import "fmt" // 1.暴力法 遍历数组 查找数组中是否存在和当前遍历到的数temp 的和为target的数 即寻找target - temp func twoSum1(nums []int, target原创 2021-08-19 09:52:09 · 76 阅读 · 0 评论 -
golang并发编程-channel
channel channel类型的值本身就是并发安全的,这也是Go语言自带的、唯⼀⼀个可以满足并发安全性的类型。一个channel就是一个先进先出的队列。 创建方式: ch := make(chan int, 10) 后面的数字代表缓冲队列的容量,如果容量为0则代表不适用缓冲队列 如果我们仅定义通道 ,而不用make进行初始化,该通道的值就为nil,对于一个值为nil的通道,对它的任何接收和发送操作,都会被一直阻塞。 阻塞问题: 缓冲通道 元素发送到channel,会按照发送顺序依次排入缓冲队列,如果缓冲原创 2021-08-18 14:55:18 · 320 阅读 · 0 评论 -
golang切片与数组相关
切片 创建时指定切片长度和容量: make([]int, 1, 10) 创建一个长度为1容量为10的[]int类型切片 在切片的底层数据结构中,会存在一个底层数组,切片可以看作对底层数组的某个片段的引用。 来看下面这个例子: s1 := []int{1, 2, 3, 4, 5} s2 := s1[2:5] fmt.Printf("s1 : %d len: %d cap: %d \n", s1, len(s1), cap(s1)) fmt.Printf("s2 : %d len:原创 2021-08-16 14:30:02 · 83 阅读 · 0 评论