基本数据类型
整型、浮点型、复数、布尔类型、字符串、字符类型(byte、rune)。
/*
uint8 无符号 (0-255)
uint16 (0-65535)
uint32
int8 有符号 ()
int16
int32
int64
int 操作系统 32 -- int32
操作系统 64 -- int64
float32
float64
*/
var a int8
var b uint8
var c uint8
整型
func main() {
// 整型
a = 200
fmt.Println(a)
//无符号8位整型 注意计算 溢出
b = 1
c = 2
fmt.Println(b - c)
// 进制表示
bin_num1 := 0b11
oct_num2 := 0o11
hex_num3 := 0x11
fmt.Println(bin_num1, oct_num2, hex_num3)
}
浮点型
package main
import (
"fmt"
"github.com/shopspring/decimal"
)
func main() {
//浮点数
var f1 float64
var f2 float64
var f3 float64
f1 = 0.111111
f2 = 0.222222
f3 = 0.333333
if f1+f2 == f3 {
fmt.Println("ok")
} else {
fmt.Println("error")
}
// decimal 保持精确度
x := decimal.NewFromFloat(0.111111)
y := decimal.NewFromFloat(0.222222)
z := decimal.NewFromFloat(0.333333)
if x.Add(y).Equal(z) {
fmt.Println("ok")
}
}
字符类型(byte、rune)
func main() {
//byte rune 字符类型 -- 编码
//ascii utf8 gbk
//编码 人类语言 -- 机器语言 -- ASCII -- Unicode(万国码)
// byte -- uint8
// rune -- int32
var c1 byte
c1 = 97
fmt.Println(c1, string(c1))
for _, v := range "abcxyz" {
fmt.Println(v)
fmt.Printf("%v(%c), type is %T\n", v, v, v)
}
}
字符串格式化
func main() {
// 格式化好的字符串赋值,在python中可以直接赋值
format_str1 := "name is %s" %(name)
// 把格式化好的字符串赋值给另一个变量
format_str2 := fmt.Sprintf("name is %s", "sctl")
fmt.Println(format_str2)
}
统计字符串的长度 -- 占用字节数
func main() {
len_str := len("xxx中yyy")
fmt.Println(len_str)
str1 := "xx中文"
for i := 0; i < len("xx中文"); i++ { //byte
// 通过下标获取的是一个个字节表示,中文占用3个字节,会被拆分输出
fmt.Printf("%v(%c), type is %T \n", str1[i], str1[i], str1[i])
}
for i := 0; i < 10; i++ {
fmt.Println(i)
}
}
转义字符
func main() {
str1 := "a\tb"
fmt.Println(str1)
str2 := `a\tb`
fmt.Println(str2)
}
字符串的转换 -- strconv
func main() {
number1 := 10
str1 := strconv.Itoa(number1) //int --> str
fmt.Printf("str1 is:%s, type is %T \n", str1, str1)
// str --> int
v, e := strconv.Atoi("10") //返回两个值,不能转换,e就会拿到错误信息
fmt.Printf("v is %v, type is %T, error is %s", v, v, e)
}
string 的常用方法 --> strings
func main() {
str1 := "xixihaha"
if strings.HasPrefix(str1, "x") {
fmt.Println("str1 start with x")
}
fmt.Println(strings.Count(str1, "h"))
// n --> -1 全部替换
fmt.Println(strings.Replace(str1, "x", "*", -1))
}
字符串的截取
func main() {
str[start:end]
str1 := "abcdefg"
fmt.Println(str1[2:5]) //左闭右开
// fmt.Println(str1[-3]) 没有负下标
}
布尔类型
func main() {
var a bool // 默认值是false
fmt.Println(a)
var num int // 默认值是0
var str string // 默认值是空字符串
fmt.Println(num, str)
}
小练习
接收用户从键盘输入的字符串,统计出现次数最多的字符,输出是那个字符和它出现的次数。
func main() {
fmt.Print("please input a string:")
var str1 string
str_max := ""
counts_max := 0
fmt.Scan(&str1)
for _, i := range str1 {
count := strings.Count(str1, string(i))
if count > counts_max {
str_max = string(i)
counts_max = count
}
}
fmt.Printf("出现次数最多的字符是%s, 出现的次数是%d", str_max, counts_max)
}