
golang
youngqqcn
精通区块链C/C++/Python/Golang/Rust/Solidity。联系:youngqqcn@qq.com
展开
-
golang的channel和waitgroup几个坑
【代码】golang的channel和waitgroup几个坑。原创 2023-04-20 15:19:35 · 217 阅读 · 0 评论 -
一道golang中关于iota的面试题
iota用法。请思考,答案在下文。请问以下程序运行输出什么?原创 2022-07-31 17:25:55 · 245 阅读 · 0 评论 -
一道golang中关于recover的面试题
recover使用原创 2022-07-24 18:18:50 · 336 阅读 · 0 评论 -
一道golang中关于接口和实现的面试题
golang接口与实现原创 2022-07-24 10:55:35 · 290 阅读 · 0 评论 -
一道golang中关于map的并发读写的面试题
map并发读写的问题原创 2022-07-24 10:40:24 · 309 阅读 · 0 评论 -
一道golang中defer和函数结合的面试题
golang defer与函数结合的面试题原创 2022-07-24 10:07:40 · 178 阅读 · 0 评论 -
一道golang中关于for range常见坑的面试题
以下代码运行,会输出什么?原创 2022-07-23 17:41:24 · 311 阅读 · 0 评论 -
一道关于defer理解的go面试题
关于defer机制的理解原创 2022-07-17 18:02:39 · 118 阅读 · 0 评论 -
centos调试golang
vi /etc/yum.repos.d/CentOS-Debuginfo.repo修改enable 为 1yum install nss-softokn-debuginfo –nogpgcheck yum-utils -ydebuginfo-install glibc-2.17-324.el7_9.x86_64 leveldb-1.12.0-11.el7.x86_64 libgcc-4.8.5-44.el7.x86_64 libstdc++-4.8.5-44.el7.x86_64 snappy-1原创 2021-06-29 18:17:39 · 253 阅读 · 0 评论 -
go获取程序本身的md5散列值
func getCurrentExeMd5Sum() (string, error) { file, err := exec.LookPath(os.Args[0]) if err != nil { return "", err } filePath, err := filepath.Abs(file) if err != nil { return "", err } var md5Sum string fp, err := os.Open(filePath) if err !=.原创 2021-01-06 16:54:50 · 190 阅读 · 0 评论 -
golang各种指针深入理解
package mainimport "fmt"func addOne(a []*int) { for i, p := range a { fmt.Printf("i=%d\n", i) *p += 1 }}func main() { // *int : pointer to int // []int : array of int // []*int : array of *int // *[]*int : pointer to array of *int原创 2020-12-30 16:53:17 · 150 阅读 · 0 评论 -
golang中panic和recover深入理解与注意事项
思考题: 下列程序输出什么?package mainimport "fmt"func main() { fmt.Println("a") if err := recover(); err != nil { fmt.Println(err) } panic("panic") fmt.Println("b") if err := recover(); err != nil { fmt.Println(err) } fmt.Println("c")},,,,,原创 2020-12-28 14:22:36 · 323 阅读 · 0 评论 -
golang 使用channel实现素数筛并深入理解goroutine泄漏
package mainimport ( "fmt" "runtime")func genPrimeNumber() (ch chan int) { ch = make(chan int, 1) go func() { for i := 2; ; i++ { ch <- i // fmt.Printf("[gen %v ] ", i) } }() return}func primeNumberFilter(ch <-chan int, p int)原创 2020-12-24 19:52:09 · 614 阅读 · 1 评论 -
golang中chan类型的地址
chan类型本是就是指针, 因此直接打印即可, 不需要再取地址.如果在取地址就是"指向指针的指针"(pointer to pointer) 即类似C/C++中的二级指针 , 如:int a; int *p = &a; int **pp = &p; 其中 pp就是二级指针package mainimport "fmt"func main() { c := make(chan int) n := &node{ ch: make(chan int), } fmt原创 2020-12-24 19:31:50 · 683 阅读 · 1 评论 -
golang线程同步和并发内存模型思考
假设在一台4核CPU, 64位系统机子上运行以下程序输出什么?func main() { runtime.GOMAXPROCS(0) wg := sync.WaitGroup{} goRoutineCount := runtime.NumCPU() wg.Add(goRoutineCount) var loopNum uint64 = 100000000 var x uint64 = 0 for i := 0; i < goRoutineCount; i++ { go fun原创 2020-12-24 16:22:28 · 225 阅读 · 0 评论 -
一个golang的关于匿名函数参数捕获和goroutine调度的例题
思考下列例子输出什么?func main() { runtime.GOMAXPROCS(1) wg := sync.WaitGroup{} wg.Add(20) for i := 0; i < 10; i++ { go func() { fmt.Println("A: ", i) wg.Done() }() } for i := 0; i < 10; i++ { go func(i int) { fmt.Println("B: ", i) wg原创 2020-12-24 15:33:09 · 412 阅读 · 0 评论 -
一个go的chan类型相关的思考题
以下例子运行结果是什么?package mainimport "fmt"func main() { var ch chan int go func() { fmt.Println("B") ch <- 0 }() <-ch fmt.Println("A")}请思考…,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,原创 2020-12-24 15:10:58 · 110 阅读 · 0 评论 -
解决go中package依赖的一种思路--函数指针
解决 "import circle " 错误的主要思路:将循环import的部分的依赖于实现(struct)改为依赖于抽象(interface)这里提供一种基于 handler(即函数指针)的思路下面的例子的总体package依赖关系:main -----> auth , core auth ---> sdkcore---> sdkauth/ante.gopackage authimport ( "fmt" "youngqqcn/sdk")// 这里之所原创 2020-12-02 21:58:56 · 287 阅读 · 0 评论 -
golang slice 深入理解
golang slice 类似定义// runtime/slice.gotype slice struct { array unsafe.Pointer // point to raw array len int // count of items cap int // capcity of slice }package mainimport "fmt"func foo(s []int) { fmt.Printf("&foo:s: %p\n", &s原创 2020-11-26 12:37:20 · 102 阅读 · 0 评论