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 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)
}
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 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)
}
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)
}
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)
}
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("")
}
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")
}
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++
}
}
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)
}
}
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)
}
}