The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
chunwang1995

一个 Go 的指针问题求助

  •  
  •   chunwang1995 · Jul 24, 2019 · 3590 views
    This topic created in 2512 days ago, the information mentioned may be changed or developed.

    如下,当

    fifo.enqueue(1) fifo.enqueue(2)

    时第二个元素进不去,请高人指点

    type Node struct { item Item next *Node isInit bool } type FIFON Node

    func (fifo *FIFON) enqueue(item Item) { if !fifo.isInit { fifo.item = item fifo.isInit = true } else { fifoPtr := fifo.next for fifoPtr != nil { fifoPtr = fifoPtr.next } fifoPtr = &Node{ item: item, next: nil, isInit: true, } } }

    4 replies    2019-07-24 10:09:38 +08:00
    nomoon
        1
    nomoon  
       Jul 24, 2019
    ```
    func (fifo *FIFON) enqueue(item int) {
    if !fifo.isInit {
    fifo.item = item
    fifo.isInit = true
    } else {
    fifoPtr := fifo.next
    if fifoPtr == nil {
    fifo.next = &Node{item: item, next: nil, isInit: true}
    } else {
    for fifoPtr.next != nil {
    fifoPtr = fifoPtr.next
    }
    fifoPtr.next = &Node{item: item, next: nil, isInit: true}
    }

    }
    }
    ```
    wa8n
        2
    wa8n  
       Jul 24, 2019 via iPhone
    这个代码格式真是看吐了
    jingxyy
        3
    jingxyy  
       Jul 24, 2019
    你的 fifoPtr 是个本地变量……而且 fifo 也不应该这样实现 你这 enqueue 是线性时间复杂度 这样没有实用价值了
    zarte
        4
    zarte  
       Jul 24, 2019
    我试了可以呀,是不是你看错了?
    ···golang
    type Node struct {
    item int
    next *Node
    isInit bool
    }

    。。。
    fifo.enqueue(1)
    fifo.enqueue(2)
    fmt.Println(fifo.next)
    return
    ···
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   970 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 21:44 · PVG 05:44 · LAX 14:44 · JFK 17:44
    ♥ Do have faith in what you're doing.