go || 基本数据类型

基本数据类型

整型、浮点型、复数、布尔类型、字符串、字符类型(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)
}

猜你喜欢

转载自blog.csdn.net/qq_60271706/article/details/133923469