$ go run helloworld.go
你好,世界!
$ go build helloworld.go
$ ls
helloworld helloworld.go
$ ./helloworld
你好,世界!
2.2 Package管理
上面例子中我们使用的就是fmt包下的Println()函数。Golang约定:我们可以用./或../相对路径来引自己的package;如果不是相对路径,那么go会去$GOPATH/src下查找。
2.3 格式化输出
类似C、Java等语言,Golang的fmt包提供了格式化输出功能,而且像%d、%s等占位符和t、r、n转义也几乎完全一致。但Golang的Println不支持格式化,只有Printf支持,所以我们经常会在后面加入n换行。此外,Golang加入了%T打印值的类型,%v打印数组等集合的所有元素。
package main
import "fmt"
import "math"
/**
* This is Printer!
* 布尔值:false
* 二进制:11111111
* 八进制:377
* 十六进制:FF
* 十进制:255
* 浮点数:3.141593
* 字符串:printer
*
* 对象类型:int,string,bool,float64
* 集合:[1 2 3 4 5]
*/
func main() {
fmt.Println("This is Printer!")
fmt.Printf("布尔值:%tn", 1 == 2)
fmt.Printf("二进制:%bn", 255)
fmt.Printf("八进制:%on", 255)
fmt.Printf("十六进制:%Xn", 255)
fmt.Printf("十进制:%dn", 255)
fmt.Printf("浮点数:%fn", math.Pi)
fmt.Printf("字符串:%sn", "printer")
fmt.Printf("对象类型:%T,%T,%T,%Tn", 1, "hello", true, math.E)
fmt.Printf("集合:%vn", [5]int{1, 2, 3, 4, 5})
}
3.语法基础
3.1 变量和常量
虽然Golang是静态类型语言,却用类似JavaScript中的var关键字声明变量。而且像同样是静态语言的Scala一样,支持类型自动推断。有一点很重要的不同是:如果明确指明变量类型的话,类型要放在变量名后面。这有点别扭吧?!后面会看到函数的入参和返回值的类型也要这样声明。
package main
import "fmt"
/**
* 单变量声明:num[100], word[hello]
* 多变量声明:i[1], i[2], k[3]
* 推导类型:b1[true], b2[false]
* 常量:age[20], pi[3.141593]
*/
func main() {
var num int = 100
var word string = "hello"
fmt.Printf("单变量声明:num[%d], word[%s]n", num, word)
var i, j, k int = 1, 2, 3
fmt.Printf("多变量声明:i[%d], i[%d], k[%d]n", i, j, k)









