第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Go 中編寫?yīng)毺仡l道的正確方法是什么?

在 Go 中編寫?yīng)毺仡l道的正確方法是什么?

Go
BIG陽 2021-08-10 15:04:48
我是圍棋初學(xué)者。我試圖找出一種簡單的方法來實(shí)現(xiàn)只輸出不同值的通道。我想做的是這樣的:package exampleimport (    "fmt"    "testing")func TestShouldReturnDistinctValues(t *testing.T) {    var c := make([]chan int)    c <- 1    c <- 1    c <- 2    c <- 2    c <- 3    for e := range c {        // only print 1, 2 and 3.        fmt.println(e)          }}如果我要使用地圖來記住以前的值,我是否應(yīng)該擔(dān)心內(nèi)存泄漏?
查看完整描述

2 回答

?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個贊

你真的不能那樣做,你必須以某種方式跟蹤這些值,amap[int]struct{}可能是最有效的內(nèi)存方式。


一個簡單的例子:


func UniqueGen(min, max int) <-chan int {

    m := make(map[int]struct{}, max-min)

    ch := make(chan int)

    go func() {

        for i := 0; i < 1000; i++ {

            v := min + rand.Intn(max)

            if _, ok := m[v]; !ok {

                ch <- v

                m[v] = struct{}{}

            }

        }

        close(ch)

    }()


    return ch

}


查看完整回答
反對 回復(fù) 2021-08-10
?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個贊

我以前做過類似的事情,除了我的問題是按升序輸出輸入。你可以通過添加一個中間 go 例程來做到這一點(diǎn)。這是一個例子:


package main


func main() {

    input, output := distinct()


    go func() {

        input <- 1

        input <- 1

        input <- 2

        input <- 2

        input <- 3

        close(input)

    }()


    for i := range output {

        println(i)

    }

}


func distinct() (input chan int, output chan int) {

    input = make(chan int)

    output = make(chan int)


    go func() {

        set := make(map[int]struct{})

        for i := range input {

            if _, ok := set[i]; !ok {

                set[i] = struct{}{}

                output <- i

            }

        }

        close(output)

    }()

    return

}


查看完整回答
反對 回復(fù) 2021-08-10
  • 2 回答
  • 0 關(guān)注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號