1、hello world
package main
import "fmt"
func main ( ) {
fmt. Println ( "Hello World, Hello Go" )
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
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 )
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
3、go语言基本概念
3.1 变量和常量
package main
import (
"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 = b2
fmt. 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)
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
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 ( "程序运行结束" )
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
3.3 数值和字符串运算
package main
import (
"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 + b
fmt. 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)
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
3.4 数值类型详解
package main
import (
"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)
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
3.5 关系和逻辑运算符
package main
import (
"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)
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
4、go语言流程控制
4.1 if-else
package main
import "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 ( "" )
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
4.2 switch
package main
import "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" )
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
4.3 for循环
package main
import (
"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++
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
4.4 for循环的死循环实现
package main
import (
"fmt"
)
func main ( ) {
for {
timeNow := time. Now ( )
fmt. Println ( "当前的时间是:" , timeNow. Format ( "2006-01-02 15:04:05" ) )
fmt. Println ( "我错了,原谅我吧" )
time. Sleep ( time. Second * 3 )
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
4.4 break和continue
package main
import (
"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)
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27