Golang学习笔记
文章平均质量分 64
Golang学习笔记,来自于官方文档和书籍
王致列
在成为全栈工程师的路上一直努力着!
展开
-
go排序二维数组,力扣:56. 合并区间(20ms)
go排序二维数组,力扣:56. 合并区间原创 2022-02-22 16:44:27 · 802 阅读 · 0 评论 -
Go map底层原理(哈希表)
了解hash表的实现机制,有助于使用哈希表进行深层次的调优。本文详细总结了map的底层实现原理。原创 2021-12-08 22:06:10 · 2441 阅读 · 0 评论 -
Go map用法必记
Go语言的map底层使用hash表实现map初始化字面量初始化m := map[string]int{ "jack": 100, "rose": 90,}内置函数make()初始化(指定容量可以有效减少内存分配的次数)m := make(map[string]int, 10)m["apple"] = 2m["banana"] = 3map增删改查m := make([string]string, 10)v, ok := m["apple"] //查询if ok原创 2021-12-07 20:09:12 · 1089 阅读 · 0 评论 -
二叉搜索树(BST)Go实现
BST定义二叉搜索树是二叉树的一种特殊表示形式,它满足如下特性:每个节点中的值必须大于(或等于)存储在其左侧子树中的任何值。 每个节点中的值必须小于(或等于)存储在其右子树中的任何值。//定义二叉树节点type TreeNode struct { Val int Left *TreeNode Right *TreeNode}//定义二叉树type BinareSearchTree struct { Root *TreeNode}.原创 2021-12-05 22:40:25 · 961 阅读 · 0 评论 -
Go slice 用法及数据结构详解
slice数据结构array指针指向底层数组,len表示切片长度,cap表示底层数组容量type slice struct { array unsafe.Pointer //切片底层数组的起始位置 len int //切片长度 cap int //切片容量}slice初始化变量声明(与所有类型变量一样,变量声明后变量值为0,对于切片来讲,0值为nil) 字面量(声明长度为0的切片时推荐使用变量声明的方式获得一个nil切片,因为ni.原创 2021-12-05 22:24:34 · 721 阅读 · 0 评论 -
Go defer(含面试题)
defer衍生出来的各种用法让人眼花缭乱,但其实Go官方对defer的规则只有三条规则一:延迟函数的参数在defer语句出现时就已经确定了func func1() { i := 0 defer fmt.Println(i)//输出0 i++ defer fmt.Println(i)//输出1 return}输出:10defer语句中的 fmt.Println() 参数i值在defer出现时就已经确定了,实际上是复制了一份。后面对变量i的修改不会影响fmt.Println(原创 2021-11-25 19:37:20 · 581 阅读 · 0 评论 -
Go channel 测试题
以下可以实现互斥锁的是?- A:```var counter int = 0var ch = make(chan int, 1)func Worker() { ch <- 1 counter++ <-ch}```- B:```govar counter int = 0var ch = make(chan int)func Worker() { <-ch counter++ ch <- 1}```- C:``.原创 2021-11-13 15:44:59 · 374 阅读 · 0 评论 -
Go channel 用法示例
1.单向管道func writeChan(chanName chan<- int) 通过形参限定函数内部只能向 channel 写入数据func readChan(chanName <-chan int)通过形参限定函数内部只能从 channel 中读取数据//单向管道func readChan(chanName <-chan int) { <-chanName}func writeChan(chanName chan<- int) { chanN原创 2021-11-13 15:40:19 · 481 阅读 · 0 评论 -
Go channel 管道的用法和数据结构
channel是Golang在语言层面提供的协程间的通信方式1.声明channel的两种方式变量声明 var ch chan int // 声明管道 此时ch == nil,//对于值为 nil 的管道,无论读写都会阻塞,而且是永久阻塞 使用make() ch1 := make(chan string) // 无缓冲管道ch2 := make(chan string, 5) // 带缓冲管道fmt.Println(ch1 == nil) //falsefmt.Pr..原创 2021-11-13 14:43:15 · 544 阅读 · 0 评论