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
おおお、なんか凄いな