// hello go
package main
import "fmt"
func main(){
fmt.Println("Hello Go")
}
// 格式化输出
package main
import "fmt"
// 负数向左,正数向右
func main(){
fmt.Printf("%-15v say %4v %5v %4v %4v","John Doe",1000,"+",1000,"=")
}
// 变量必须先声明在使用
package main
import "fmt"
// 两种变量类型
// 常量
// 变量
// 变量声明
/*
num := 100 // 只存在于函数里面
var num = 100
var (
num = 100
num2 = 1000
)
*/
func main(){
const lightSpeed = 100
var distance = 1000
fmt.Println(distance / lightSpeed ,"seconds")
}
package main
import "fmt"
func main(){
var content = "Hello World"
if content == "Hello World" {
fmt.Println("This is Hello World")
}else if content == "Hello Go"{
fmt.Println("Hello Go")
}else{
fmt.Println("Didn't get anythings")
}
}
package main
import "fmt"
func main(){
var flag1 = true
var flag2 = false
if flag1 || flag2 {
fmt.Println("or")
}else if flag1 && flag2 {
fmt.Println("and")
}
if !flag2 {
fmt.Println("not flag2")
}
}
package main
import "fmt"
func main(){
variables := "Hello"
switch variables {
case "Hello":
fmt.Println("Hello")
case "World":
fmt.Println("World")
default:
fmt.Println("Default")
}
}
package main
import "fmt"
func main(){
for con:=20;con>10;con--{
fmt.Println(con)
}
count := 20
for count >= 10 {
fmt.Println(count)
count --
}
count2 := 20
for {
count2 --
if count2 < 10 {
break
}
}
}
package main
import (
"fmt"
)
func main() {
question := "Hello"
for i,c := range question {
fmt.Printf("%v - %c",i,c) // index - value
}
}
// 函数声明
func test(x,y int) int {
return x + y
}
// 函数作为参数 传递给另一个函数
func run(a,b int, test func(x,y int) int ) int {
return test(a,b)
}
//运行
func main() {
result := run(1,3,test)
fmt.Println(result)
}
// 在 go 里面我们可以定义自己的类型
// 一旦你定义了自己的类型,比如你定义了一个kevin 类型
// 虽然 kevin 是 float64 类型,但是你传入一个 float64 类型的值,一样会出错
type kevin float64
func plus(x,y kevin)kevin{
return y + x
}
func main() {
var num1 float64 = 10
result2 := plus(num1,2) // prog.go:29:17: cannot use num1 (type float64) as type kevin in argument to plus
fmt.Println(result2)
}
// 自定义函数类型,可以简化将函数作为参数的时候的代码
// 适用于多处地方需要使用这个函数作为参数
// 否则代码可读性会降低
// 注意, 这里 _add 和 add 一定要不同的命名
type _add func(x,y int) int
func add(x,y int) int {
return x+y
}
func run(a,b int, x _add) int {
return x(a,b)
}
func main() {
result := run(1,10,add)
fmt.Println(result)
}
// go 里面没有对象这个概念,但是却有方法这样的概念
//函数跟方法的区别在于,函数是全局的,方法是实例的
package main
import (
"fmt"
)
type kevin float64
type john float64
//method
func (k kevin) john() john {
return john(k - 100.0)
}
func main() {
var k kevin = 200.0
r := k.john()
fmt.Println(r)
}
//匿名函数
package main
import (
"fmt"
)
func main() {
f:= func(x,y int) int{
return x+y
}
fmt.Println(f(1,2))
}
// 立即执行匿名函数
func main() {
func(x,y int) int{
return x+y
}(1,2)
}
package main
import (
"fmt"
)
func main() {
// 数组的声明
var arr1 =[6]string{"Hello","World","John","Here","is","World"}
// 声明固定个数
var arr2 [5]int
// 声明数组,也是固定个数,但是基于你声明时候的元素个数,自动计算出其数组长度
var arr3 = [...]string {"Hello","Hello2"}
fmt.Println(arr1)
fmt.Println(arr2)
fmt.Println(arr3)
}
package main
import (
"fmt"
)
func main() {
// 数组的声明
var arr1 =[6]string{"Hello","World","John","Here","is","World"}
// 使用range
for i,v := range arr1 {
fmt.Println(i,v)
}
// 使用序列循环
for i:=0;i<len(arr1);i++{
fmt.Println(arr1[i])
}
}