2017-03-19 153 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 –