golang面试
你不懂程序员的Bug
兼爱平生
展开
-
go反射生成指定类型的结构体数组
上面已经有非常详细的代码注解了,所以也不用太多的解释,如有不明白的地方,可以直接留言沟通。反射生成结构体数组 根据传入类型生成对应数组。生成string类型的数组。使用golang语言。原创 2023-02-03 11:09:26 · 584 阅读 · 0 评论 -
go反射生成指定类型的结构体切片,并赋值
上面已经有非常详细的代码注解了,所以也不用太多的解释,如有不明白的地方,可以直接留言沟通。反射生成结构体切片 根据传入类型生成对应切片, 并把值放到切片里。生成string类型的切片。使用golang语言。生成结构体切片并赋空值。生成结构体切片,并赋值。原创 2023-02-03 11:02:03 · 996 阅读 · 0 评论 -
go反射调用结构体对象方法
上面已经有非常详细的代码注解了,所以也不用太多的解释,如有不明白的地方,可以直接留言沟通。golang语言使用反射机制,调用结构体相关方法,方法包含传参和返回结果。原创 2023-02-03 10:53:37 · 226 阅读 · 0 评论 -
go语言使用redis用作分布式锁
用redis实现分布式锁,直接上代码,代码量很少,也很简单。如有其他疑问,可以大胆留言。原创 2023-02-03 10:05:55 · 305 阅读 · 0 评论 -
golang chan被关闭后读写的那点事
func main() { closeReadChan() closeWriteChan() closeReadChan2()}// 从有缓冲被关闭的chan写数据, 报错: panic: send on closed channelfunc closeWriteChan() { wg := sync.WaitGroup{} ch := make(chan int, 100) wg.Add(2) go func() { defer w.原创 2021-11-02 20:12:21 · 479 阅读 · 0 评论 -
golang实现协程之间的调用栗子
题目:有一个独立的do方法输出“do”的字样, 有3个协程;A协程里触发B协程输出10次do字样,随后B协程告诉A协程做完10次输出,接着A协程输出一次do字样,接着A协程触发C协程关闭B协程,随后C协程关闭, A协程关闭。package mainimport ( "context" "fmt" "sync" "time")func main() { aChan := make(chan int) bChan := make(chan int) cChan := mak原创 2021-08-19 19:20:14 · 322 阅读 · 0 评论 -
golang反射之遍历struct字段及内容
package mainimport ( "fmt" "reflect")type BaseData struct { // mysql DbUrl string `yaml:"db_url" name:"数据库地址"` DbUser string `yaml:"db_user" name:"数据库用户名"` DbPassWord string `yaml:"db_pass_word" name:"数据库密码"` DbName .原创 2020-06-05 10:09:45 · 7498 阅读 · 0 评论 -
golang语言之互斥锁详解
互斥锁是传统的并发程序对共享资源进行访问控制的主要手段,在Go中,似乎更推崇由channel来实现资源共享和通信。它由标准库代码包sync中的Mutex结构体类型代表。只有两个公开方法:调用Lock()获得锁,调用unlock()释放锁。 使用Lock()加锁后,不能再继续对其加锁(同一个goroutine中,即:同步调用),否则会panic。只有在unlock()之后才能再次Lock()。...原创 2020-03-27 00:18:32 · 519 阅读 · 0 评论 -
golang面试经之笔试3
// 以下代码输出什么type student struct { Name string Age int}func pase_student() { m := make(map[string]*student) stus := []student{ {Name: "huang", Age: 24}, {Name: "li", Age: 2...原创 2020-03-26 18:59:38 · 402 阅读 · 0 评论 -
golang面试经之笔试2
// 以下代码输出什么?func main() { runtime.GOMAXPROCS(2) wg := sync.WaitGroup{} wg.Add(10) for i := 0; i < 10; i++ { go func(i int) { fmt.Println("i: ", i) wg.Done()...原创 2020-03-26 18:44:43 · 197 阅读 · 0 评论 -
golang面试经之笔试1
// 以下代码输出什么内容?type People struct{}func (p *People) ShowA() { fmt.Println("showA") p.ShowB()}func (p *People) ShowB() { fmt.Println("showB")}type Teacher struct { People}func (t...原创 2020-03-26 18:19:09 · 329 阅读 · 0 评论 -
golang面试经之channel之one
下面一段代码 `len(m)` 不一定会打印为 10,为什么?。如果想要 `len(m)` 打印为 10,应该怎么修改代码?func main() { const N = 10 m := make(map[int]int) wg := &sync.WaitGroup{} mu := &sync.Mutex{} wg.Add(N)...原创 2020-03-08 22:17:55 · 504 阅读 · 0 评论