小编smo*_*ums的帖子

带有小字节序的编码Go lang

我不得不在Web服务器上工作,我们的主要工程师编写的部分代码是我不理解的,目前正在尝试破译.这是一个类似的,更简单的版本,在我们的代码库中发生了什么,我想知道是否有人可以一步一步地给我一个深刻的解释.

package main
import "fmt"
import "encoding/binary"
func main() {
////////////////////////////////// no need to explain anything
    b := []byte{2,3,5,7,11,13} /// within this comment block.
    for _,e := range b {        //
    fmt.Printf("%d ",e)         //
    }                           //
    fmt.Printf("\n")            //
    //////////////////////////////
    length:= binary.LittleEndian.Uint32(b)  /// <<< Why this results in                                                 
                                            /// 117768962 is the question.
    fmt.Printf("customLen=%d\n",int(length))

}
Run Code Online (Sandbox Code Playgroud)

encoding endianness go

1
推荐指数
1
解决办法
1829
查看次数

为什么这些goroutines的WaitGroup没有正常工作?

这段代码用于我的编程语言类的一个相当简单的演示.我试图显示Go允许的一些不同的技术,比如接口和并发,但我似乎无法让WaitGroups正常工作,所以它最终会让我陷入僵局.我最大的问题是:当goroutines停止时,如何让WaitGroups正确同步并且不会使系统死锁?我很可能错过了一些明显的东西.

package main

import (
    "bufio"
    "fmt"
    "os"
    "sync"
)


func Reader(wg *sync.WaitGroup, message chan string, done chan bool){
defer wg.Done()
        reader := bufio.NewReader(os.Stdin)
        for {

            msg, _ := reader.ReadString('\n')
            if msg == "exit\n" {
                <-done
                return
            } else {
                message <- msg
            }

        }

 }

func main() {
    message := make(chan string)
    done := make(chan bool)
    wg := &sync.WaitGroup{}


    wg.Add(1)
    go Reader(wg, message, done) 


    wg.Add(1)
    go func(){
    defer wg.Done()
        for {
            select {
            case <-done:
                return
            case msg := …
Run Code Online (Sandbox Code Playgroud)

concurrency channel go

0
推荐指数
1
解决办法
54
查看次数

标签 统计

go ×2

channel ×1

concurrency ×1

encoding ×1

endianness ×1