- 布尔值 bool:
- 布尔值只可以是 true 或 false。布尔值一般用来反映表达式的结果真还是假。真返回true,假返回false。可以理解为表达式成立或不成立。
- 布尔类型的零值为 flase。
package main
import "fmt"
func main() {
fmt.Println(1 == 1) // 1 等于 1,结果为真,返回 true。
fmt.Println(1 == 2) // 1 等于 2,结果为假,返回 flase。
}
//输出结果;
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
true
false
package main
import "fmt"
func main() {
fmt.Printf("%T\n", 1 == 1) // %T查看 1 等于 1 返回的数据类型
fmt.Printf("%T", 1 == 2) // %T查看 1 等于 2 返回的数据类型
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
bool // true 和 flase 都是 bool 布尔型。
bool
package main
import "fmt"
func main() {
var b bool // 只定义一个 bool 变量 b,不赋值。
fmt.Println(b)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
false // bool 布尔值的零值是 flase。
package main
import "fmt"
func main() {
b1 := true // 赋值 true 到 b1
b2 := false //赋值 false 到 b2
fmt.Printf("%T\n", b1) // 打印 b1 的类型
fmt.Printf("%T\n", b2) // 打印 b2 的类型
//fmt.Println(b1 + b2) // 先注释掉 b1 + b2 的加法运算。
}
// 输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
bool // b1 和 b2 都是 bool 值
bool
-----------------------------------------
package main
import "fmt"
func main() {
b1 := true
b2 := false
fmt.Printf("%T\n", b1)
fmt.Printf("%T\n", b2)
fmt.Println(b1 + b2) // 恢复注释部分,b1 + b2 进行加法运算
}
// 输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
# command-line-arguments
.\mian.go:10:17: invalid operation: b1 + b2 (operator + not defined on bool)
// invalid operation:系统提示无效操作,bool 未被定义。
package main
import "fmt"
func main() {
b1 := true // bool 类型,true 赋值到 b1
b2 := 2 // int 类型,2 赋值到 b2
fmt.Println(b1 + b2) // bool 类型 b1 和 int 类型 b2 相加
}
// 输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
# command-line-arguments
.\mian.go:8:17: invalid operation: b1 + b2 (mismatched types bool and int)
// mismatched types bool and int:bool和int类型不匹配。
package main
import "fmt"
func main() {
b1 := true // bool 类型,true 赋值到 b1
b2 := 2 // int 类型,2 赋值到 b2
fmt.Println(int(b1) + b2) // 强制转换bool类型 b1 为 int 类型
}
// 输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
# command-line-arguments
.\mian.go:8:17: cannot convert b1 (type bool) to type int
// 不能将b1 (bool类型的变量)转换为int类型
- 字符串 string:
- 字符串 string 是由字符所组成的一串序列。由 " " 双引号括起来。
package main
import "fmt"
func main() {
// "Hello World" , "您好,世界!" 括号里面的是字符串,把它们赋值到 s1 和 s2 变量。
s1 := "Hello World"
s2 := "您好,世界!"
fmt.Println(s1)
fmt.Println(s2)
}
// 输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
Hello World
您好,世界!
package main
import "fmt"
func main() {
var name string // 只定义字符串类型,不赋值。
fmt.Println(name)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
<---------------------------------- ## 这里输出的是空值。
package main
import "fmt"
func main() {
// 字符串 与 字符串之间用 \n 转译符换行,\t tab键
s1 := "\t春晓\n 孟浩然 (唐代)\n春眠不觉晓,处处闻啼鸟。\n夜来风雨声,花落知多少。"
fmt.Println(s1)
fmt.Println(s1)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
春晓
孟浩然 (唐代)
春眠不觉晓,处处闻啼鸟。
夜来风雨声,花落知多少。
package main
import "fmt"
func main() {
// 反引号括住的范围都可以自由编写内容。
s1 := `
赠汪伦
李白 〔唐代〕
李白乘舟将欲行,忽闻岸上踏歌声。
桃花潭水深千尺,不及汪伦送我情。
`
fmt.Println(s1)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
赠汪伦
李白 〔唐代〕
李白乘舟将欲行,忽闻岸上踏歌声。
桃花潭水深千尺,不及汪伦送我情。
------------------------------------- 分隔线 ----------------------------------
tips:使用反引号定义多行字符的方法,不能在反引号内使用转译符。
package main
import "fmt"
func main() {
s1 := `
赠汪伦
李白 〔唐代〕
李白乘舟将欲行,忽闻岸上踏歌声。
桃\n花\n潭\n水\n深n千\n尺,不及汪伦送我情。 //反引号范围内不能使用转移符
`
fmt.Println(s1)
}
//输出结果:
PS C:\Users\86186\go\src\chapter2\2.6> go run .\mian.go
赠汪伦
李白 〔唐代〕
李白乘舟将欲行,忽闻岸上踏歌声。
桃\n花\n潭\n水\n深n千\n尺,不及汪伦送我情。 //转译符在反引号内不起作用,
//反引号会把所有内容原样输出。
网友评论