2017-03-19 147 views
0

我正在使用此程序創建單個鏈接列表並打印列表元素。它在我的Mac上工作,但當我在Windows 7中嘗試相同的程序時,它不能按預期工作。有人能夠確定這裏有什麼問題嗎?Go Program in not in WIndows 7

// Create a single linked list and display elements of list 
package main 

import "fmt" 

// Node structure 
type Node struct { 
    Value int 
    Next *Node 
} 

func main() { 
    var value int 
    var head, current *Node 

    // Create linked list 
    for i := 0; i <= 5; i++ { 
     fmt.Print("Plase enter a number: ") 
     fmt.Scanf("%d", &value) 

     var newNode = &Node{value, nil} 
     if head != nil { 
      current.Next = newNode 
     } else { 
      head = newNode 
     } 
     current = newNode 
    } 

    // Print elements of linked list 
    for node := head; node != nil; node = node.Next { 
     fmt.Printf("%d ", node.Value) 
    } 
} 

輸出

E:\go > go run linked_list.go 
Please enter a number: 10 
Please enter a number: Please enter a number: 20 
Please enter a number: Please enter a number: 30 
Please enter a number: 10 20 20 30 30 30 

回答

2

看起來Scanf的治療窗換行符(\r\n)不同於UNIX換行符(\n)。我相信這是Go的舊版本中的一個錯誤。你正在運行什麼版本?嘗試使用1.7或更高版本。

作爲解決方法,請嘗試執行fmt.Scanf("%d\n", &value)以明確地使用換行符。

+0

thanks @MahlerFive –