计算机无法精确表示浮点数,所以有精度这个概念,因而计算后的浮点点数一般都会默认显示有n位有效数字,3.14原本是64位转换32位计算后会显示32位精度的默认有效位数,而转换64时因实际就是64位精度并没进行真的转换而直接输出了原来的3.14
flagsample.exe是main.go的编译文件
因为Token是个迭代器函数,返回的是nextToken
会自动补全分号,你可以加也可以不加。go认为加分号完全没必要,而且我认为go这样做还有一种限制格式的作用,如果啥都写一行,比如
a = b; a1 = c + 2; b = c * 5 + a & 2;
就比较难看了,但
a = b
a1 = c + 2
b = c * 5 + a & 2
就好看一些
c语言的发明者所在google团队
用了ioutil.ReadFile()来读取文件,就不必用os.Open()了,所以正确的写法是:
package main
import (
"bytes"
"encoding/xml"
"fmt"
"io/ioutil"
)
func main() {
// file, err := os.Open(xmlFile)
// if err != nil {
// panic(err)
// }
data, err := ioutil.ReadFile("vsproj.csproj")
if err != nil {
panic(err)
}
//defer file.Close()
NodeDecoder := xml.NewDecoder(bytes.NewBuffer(data))
var t xml.Token
for t, err = NodeDecoder.Token(); err == nil; t, err = NodeDecoder.Token() {
switch token := t.(type) {
case xml.StartElement:
name := token.Name.Local
fmt.Println(name)
case xml.EndElement:
}
}
}