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

一个 Go 的指针问题求助

  •  
  •   chunwang1995 · Jul 24, 2019 · 3939 views
    This topic created in 2665 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
    nomoon
    Jul 24, 2019
    1
    ```
    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
    wa8n
    Jul 24, 2019 via iPhone
    2
    这个代码格式真是看吐了
    jingxyy
    jingxyy
    Jul 24, 2019
    3
    你的 fifoPtr 是个本地变量……而且 fifo 也不应该这样实现 你这 enqueue 是线性时间复杂度 这样没有实用价值了
    zarte
    zarte
    Jul 24, 2019
    4
    我试了可以呀,是不是你看错了?
    ···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   ·   Privacy   ·   Solana   ·   1744 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 16:04 · PVG 00:04 · LAX 08:04 · JFK 11:04
    ♥ Do have faith in what you're doing.