sp1.常见类型与循环
2019-12-05 本文已影响0人
Amok校长
package main
import (
"fmt"
"strings"
)
// 全局变量
var (
name string
age int
isOk bool
)
// 全局常量
const pi = 3.141592653
// 批量声明常量
const (
statusOk = 200
notFount = 404
)
// iota
const (
c1 = iota //0
c2 = 100 //100
_ = iota
c3 //3
c4 //4
)
// 多个常量在一行声明
const (
d1, d2 = iota + 1, iota + 2 //d1:1 d2:2
d3, d4 = iota + 1, iota + 2 //d3:2 d4:3
) // const中每新增一行常量声明 ,iota计数一次
func main() {
name = "大象"
age = 16
isOk = true
//Go语言中必须声明变量,不使用编译不通过
// 1.1声明变量同时赋值
var s1 string = "哈哈"
fmt.Println(s1)
// 1.2.类型推导
var s2 = "20"
fmt.Println(s2)
// 1.3.简短变量声明,只能在函数里面用
s3 := "小红书"
fmt.Println(s3)
// 1.4.匿名变量 _
/*注意事项:
1.函数外的每个语句, 必须以关键字const、var、func等
2.:=不能在函数外使用
3._占位符
*/
// 2.1 iota
fmt.Println(c1, c2, c3, c4)
// 2.2 iota计数机制
fmt.Println(d1, d2, d3, d4)
// 3.1 进制转换
var i1 = 101
fmt.Printf("%d\n", i1)
fmt.Printf("%b\n", i1) //打印二进制
fmt.Printf("%o\n", i1) //打印八进制
fmt.Printf("%x\n", i1) //打印16进制
// 八进制
i2 := 077
fmt.Printf("%d\n", i2) //打印十进制
// 十六进制
i3 := 0x12345
fmt.Printf("%d\n", i3) //打印十进制
// 3.2 查看变量类型
fmt.Printf("%T\n", i3)
// 4.1 浮点型
f1 := 1.23456
fmt.Printf("%T\n", f1) //默认float64类型
// 5.1 bool型
g1 := true
var g2 bool
fmt.Println(g1)
fmt.Println(g2) // 默认值是false
// 6.1 字符串
// Go语言中字符串是双引号包裹的
// Go语言中字符是单引号包裹的
h1 := "小王子"
h2 := 'h'
fmt.Printf("%T,%T\n", h1, h2) //string,int32
// 6.2 多行字符
h3 := `
小狐狸对小王子说:
"很多事是要用心去看的".
小王子说:那只玫瑰对于我是独一无二的,它驯养了我!
`
fmt.Println(h3)
// 6.3 字符串相关操作
h4 := `D:\GO\Src`
fmt.Println(len(h4)) //获取字符串的长度
h5 := "(~ ̄(OO) ̄)ブ"
println(h5 + h4) //字符串拼接
h6 := strings.Split(h4, "\\") //字符串分隔
fmt.Println(h6)
fmt.Println(strings.Contains(h5, "是否包含")) //是否包含
fmt.Println(strings.HasSuffix(h5, "是否后缀")) //是否后缀
fmt.Println(strings.HasPrefix(h5, "是否前缀")) //是否前缀
h7 := "abcdcef"
fmt.Println(strings.Index(h7, "c")) //查看首出现索引
fmt.Println(strings.LastIndex(h7, "c")) //查看最后出现索引
fmt.Println(strings.Join(h6, "飞行员")) //拼接slice中的字符串, 并且以xx字符连接
// 7.1 字符串长度
// byte(unit8类型)和rune(int32类型),都属于类型别名
// 英文字符存的字符是byte字节, 中文或其他语言字符是rune类型
// Go语言中为了处理非ASCII码类型的字节,定义了rune类型
j := "He年" //英文字符占一个字节,中文字符占3个字节
jn := len(j) //得到的是byte字节的数量
fmt.Println(jn)
// 7.2 字符串遍历
for _, j1 := range j { //从字符串中拿到具体的字符
fmt.Printf("%c\n", j1) //%c字符显示
}
// 7.3 字符串修改
j2 := []rune(j) // 把字符串强制转换成一个rune切片
j2[0] = '沙'
fmt.Println(string(j2)) //把切片强制转换为string类型
// 7.4 类型转换
j3 := 10
var j4 float64
j4 = float64(j3)
fmt.Println(j4)
// 8.1 if判断语句
//if条件判断语句的特殊写法: 可以在if表达式前添加一个执行语句, 根据变量值进行判断
if age := 18; age > 19 {
fmt.Println("小王子的星球")
} else {
fmt.Println("面包树的家")
}
// 9.1 for循环基本用法
for i := 0; i < 10; i++ {
fmt.Println(i)
}
// 9.2 for循环变种1
var i int
for ; i < 5; i++ {
fmt.Println(i)
}
// 9.3 for循环变种2
ii2 := 5
for ii2 < 10 {
fmt.Println(ii2)
ii2++
}
// 9.4 for无线循环
for {
ii2++
if ii2 > 20 {
fmt.Println("可以跳出循环了")
break
}
}
// 9.5 break和continue的区别:
for i := 0; i < 10; i++ {
if i == 5 {
break //跳出循环,不再执行后续操作
}
fmt.Println(i)
}
fmt.Println("OK")
for i := 0; i < 10; i++ {
if i==5 {
continue //跳过本次循环,不执行本次操作,后面循环继续
}
fmt.Println(i)
}
fmt.Println("over")
}