Every Go is made up of packages. Programs start running in package main.
package main
import(
	"fmt"
	"math/rand"
) 
func main(){
	fmt.Println("My favorite number is", rand.Intn(10))
}
$ go build hello.go && ./hello
My favorite number is 1
### import
“factored” import statement
import(
	"fmt"
	"math"
) 
func main(){
	fmt.Printf("Now you have %g problems.\n", math.Sqrt(7))
}
$ go build hello.go && ./hello
Now you have 2.6457513110645907 problems.
### Exported names
A name is exported if it begins with a capital letter
it can not be used “math.pi”
import(
	"fmt"
	"math"
) 
func main(){
	fmt.Println(math.Pi)
}
### Functions
A function can take zero or more arguments.
The type comes after variable name.
func add(x int, y int) int {
	return x + y
}
func main(){
	fmt.Println(add(22, 34))
}
$ go build hello.go && ./hello
56
When two or more consecutive named function parameters share a type, can omit the type from all but the last
func add(x, y int) int {
	return x + y
}
function can return any number of results
func swap(x, y string)(string, string) {
	return y, x
}
func main(){
	a, b := swap("hello", "go")
	fmt.Println(a, b)
}
$ go build hello.go && ./hello
go hello
おおお、なんか凄いな
 
					 
