1、hello world
package main
import "fmt"
func main ( ) { fmt. Println ( "Hello World, Hello Go" )
}
2、 fmt 使用
package main
import "fmt"
func main ( ) { fmt. Println ( "Hello World, Hello Go" ) fmt. Println ( "还可以打印中文" ) fmt. Print ( "使用print方法1" ) fmt. Print ( "使用print方法2" ) fmt. Printf ( "我们可以打印一个别的地方,传递过来的值:%s,这个值可以用占位,然后打印" , "这是我想打印的内容" ) fmt. Println ( "还可以打印:" , "中文" ) fmtEnv := fmt. Sprintf ( "拼接字符串:%s, 和这个字符串:%s, 以及一个数字: %d" , "s1" , "s2" , 727585266 ) fmt. Println ( "拼接后的字符串是: " , fmtEnv) fmt. Println ( 3.1415926 )
}
3、go语言基本概念
3.1 变量和常量
package mainimport ( "fmt" "reflect"
) func main ( ) { var name string = "张宇" fmt. Println ( "我的名字是:" , name) var name2 string name2 = "zy" fmt. Printf ( "My English name is: %s\n" , name2) var ( name3 string = "name3" name4 int ) println ( name3, name4) b := true f := 3.1415926 fmt. Println ( b, f) b2 := false b = b2fmt. Println ( b) fmt. Println ( "name2的类型是: " , reflect. TypeOf ( name2) ) fmt. Println ( "f的类型是: " , reflect. TypeOf ( f) ) const c1, c2, c3 = 1 , 2 , 3 fmt. Println ( "常量的值是:" , c1, c2, c3)
}
3.2 函数和作用域
package main
import "fmt"
var globalName string = "zy"
func printAd ( ) { fmt. Println ( "我是张宇" ) fmt. Println ( "全局变量的值: " , globalName)
}
func main ( ) { var name = "张宇2" fmt. Println ( "name is: " , name) fmt. Println ( "程序开始运行" ) printAd ( ) fmt. Println ( "在main函数内全局变量的值: " , globalName) fmt. Println ( "程序运行结束" )
}
3.3 数值和字符串运算
package mainimport ( "fmt" "reflect"
) func numOperations ( a, b int ) { fmt. Printf ( "%d + %d = %d\n" , a, b, a+ b) fmt. Printf ( "%d - %d = %d\n" , a, b, a- b) fmt. Printf ( "%d * %d = %d\n" , a, b, a* b) fmt. Printf ( "%d / %d = %f\n" , a, b, float64 ( a) / float64 ( b) ) fmt. Printf ( "%d 取余 %d = %d\n" , a, b, a% b)
}
func stringOperation ( a, b string ) { fmt. Printf ( "a和b拼接后: %s\n" , a+ b) ab := a + bfmt. Printf ( "ab: %s, 类型是:%s" , ab, reflect. TypeOf ( ab) )
}
func stringSprintf ( firstName, secondName string ) { fullName := fmt. Sprintf ( "%s %s" , secondName, firstName) fmt. Println ( "你的全名是:" , fullName)
} func main ( ) { numOperations ( 1 , 2 ) name1 := "张宇" name2 := "zy" stringOperation ( name1, name2) stringOperation ( "1" , "2" ) stringSprintf ( "宇" , "张" ) p1 := 8 p1++ fmt. Println ( "自增后的值:" , p1) p1-- p1-- fmt. Println ( "自减后的值:" , p1)
}
3.4 数值类型详解
package mainimport ( "fmt" "math" "reflect"
) func main ( ) { defaultIntType := 1 fmt. Println ( "默认的数值类型是:" , reflect. TypeOf ( defaultIntType) ) var int64Num int64 = 1 fmt. Println ( "int64Num的数值类型是:" , reflect. TypeOf ( int64Num) ) var uintNum uint = 1 fmt. Println ( "uintNum的数值类型是:" , reflect. TypeOf ( uintNum) ) fmt. Println ( "int的取值范围:" , math. MinInt, math. MaxInt) fmt. Println ( "uint的取值范围:" , uint ( math. MaxUint) ) fmt. Println ( 18446744073709551615 > 9223372036854775807 ) var floatNum1 float64 = 3.14 var floatNum2 float32 = 3.15 fmt. Println ( floatNum1, floatNum2)
}
3.5 关系和逻辑运算符
package mainimport ( "fmt" "reflect"
) func main ( ) { fmt. Println ( 727585 > 727588 ) fmt. Println ( 727585 < 727588 ) fmt. Println ( "a" == "b" ) fmt. Println ( 3.14 == 3.14 ) s1 := "zy" s2 := "zhy" fmt. Println ( "s1和s2相等: " , s1 == s2) fmt. Println ( "s1和s2不相等: " , s1 != s2) fmt. Println ( "s1 > s2:" , s1 > s2) fmt. Println ( "s2 > s1:" , s2 > s1) n1 := 1 n2 := 1 n3 := 2 fmt. Println ( n1 == n2 && n2 == n3) fmt. Println ( n1 == n2 || reflect. TypeOf ( n3) . Kind ( ) == reflect. String)
}
4、go语言流程控制
4.1 if-else
package mainimport "fmt"
func printPrice ( weather string ) { defaultPrice := 10 if weather == "sunny" { fmt. Println ( "今天是晴天,雨伞的价格是:" , defaultPrice) } else { fmt. Println ( "今天不是晴天,雨伞的价格是:" , defaultPrice+ 10 ) }
} func printPriceWithWeather ( weather string ) { defaultPrice := 10 if weather == "lightRain" { fmt. Println ( "下小雨了,雨伞的价格是:" , defaultPrice+ 5 ) } else if weather == "heavyRain" { fmt. Println ( "下大雨了,雨伞的价格是:" , defaultPrice+ 10 ) } else if weather == "rainStorm" { fmt. Println ( "下暴雨了,雨伞的价格是:" , defaultPrice+ 20 ) } else { fmt. Println ( "雨伞的价格是:" , defaultPrice) }
} func main ( ) { weather := "rain" printPrice ( weather) weather = "sunny" printPrice ( weather) printPriceWithWeather ( "lightRain" ) printPriceWithWeather ( "rainStorm" ) printPriceWithWeather ( "" )
}
4.2 switch
package mainimport "fmt" func printPriceWithWeather ( weather string ) { defaultPrice := 10 if weather == "lightRain" { fmt. Println ( "下小雨了,雨伞的价格是:" , defaultPrice+ 5 ) } else if weather == "heavyRain" { fmt. Println ( "下大雨了,雨伞的价格是:" , defaultPrice+ 10 ) } else if weather == "rainStorm" { fmt. Println ( "下暴雨了,雨伞的价格是:" , defaultPrice+ 20 ) } else { fmt. Println ( "雨伞的价格是:" , defaultPrice) }
} func printPriceWithSwitch ( weather string ) { defaultPrice := 10 switch weather { case "lightRain" : fmt. Println ( "下小雨了,雨伞的价格是:" , defaultPrice+ 5 ) case "heavyRain" : fmt. Println ( "下大雨了,雨伞的价格是:" , defaultPrice+ 10 ) case "rainStorm" : fmt. Println ( "下暴雨了,雨伞的价格是:" , defaultPrice+ 20 ) case "snowing" , "sunny" : fmt. Println ( "雨伞的价格是:" , defaultPrice) default : fmt. Println ( "我不知道现在是什么天气,所以我不卖了~" ) }
} func main ( ) { printPriceWithSwitch ( "" ) printPriceWithSwitch ( "snowing" )
}
4.3 for循环
package mainimport ( "fmt"
) func main ( ) { count := 0 for num := 1 ; num <= 100 ; num++ { if num% 2 == 0 { fmt. Println ( "发现一个偶数:" , num) count++ } } fmt. Printf ( "1-100一共有偶数:%d个\n" , count) num2 := 1 for num2 <= 100 { if num2% 2 != 0 { fmt. Println ( "发现奇数:" , num2) } num2++ }
}
4.4 for循环的死循环实现
package mainimport ( "fmt"
) func main ( ) {
for { timeNow := time. Now ( ) fmt. Println ( "当前的时间是:" , timeNow. Format ( "2006-01-02 15:04:05" ) ) fmt. Println ( "我错了,原谅我吧" ) time. Sleep ( time. Second * 3 ) }
}
4.4 break和continue
package mainimport ( "fmt"
) func main ( ) { for i := 0 ; i < 100 ; i++ { if i == 88 { fmt. Println ( "我找到了88" ) break } fmt. Println ( "现在的数值是:" , i) } for i := 0 ; i < 100 ; i++ { if i == 88 { fmt. Println ( "我找到了88" ) continue } fmt. Println ( "现在的数值是:" , i) }
}