go笔记--基本数据类型

目录

一、整型

二、浮点型

三、字符类型

四、字符串

字符串的格式化

统计字符串的长度

循环输出每个字节

转义字符

字符串的转换--strconv包

string的常用方法--strings包

字符串的截取

五、布尔类型


一、整型

package main

import "fmt"

/*
整型:有符号、无符号
无符号整型:uint8、uint16、uint32
有符号整型:int8、int16、int32
*/
var a int8
var b uint8
var c uint8
func main(){
    //整型
    a = 100
    fmt.Printf("a is %v, type of a is %T\n", a, a)
    //无符号位8位整型在计算时注意溢出
    b = 1
    c = 2
    fmt.Println("b - c =", b-c)
    //进制表示:0b--二进制;0o--八进制;0x--十六进制
    bin_num := 0b11
    oct_num := 0o11
    hex_num := 0x11
    fmt.Println("二进制11的十进制为", bin_num)
    fmt.Println("八进制11的十进制为", oct_num)
    fmt.Println("十六进制11的十进制为", hex_num)
}

运行结果:

二、浮点型

package main

import (
"fmt"
"github.com/shopspring/decimal"
)


func main(){
	//浮点数:float32、float64 --相比float32,float64更精确
	var f1 float32 = 0.111111
	var f2 float32 = 0.222222
	var f3 float32 = 0.333333
	if f1 + f2 == f3{
		fmt.Println("0.111111 + 0.222222 = 0.333333")
	}else{
		fmt.Println("0.111111 + 0.222222 != 0.333333")
	}

	//精确的浮点数:decimal
	x := decimal.NewFromFloat(0.111111)
	y := decimal.NewFromFloat(0.222222)
	z := decimal.NewFromFloat(0.333333)
	if x.Add(y).Equal(z) {
		fmt.Println("0.111111 + 0.222222 = 0.333333")
	}else{
		fmt.Println("0.111111 + 0.222222 != 0.333333")
	}
}

运行结果:

三、字符类型

package main

import "fmt"

func main(){
	//字符类型:byte、rune --编码:人类语言与机器语言的翻译工具
	//byte相当于uint8
	//rune相当于int32
	var c1 byte
	c1 = 97
	fmt.Printf("编码为%v,对应的字符为%v\n", c1, string(c1))
	//字符串的遍历
	//range获取的是rune类型,range返回两个值:index(索引)和value(值)
	for _, v := range "abcxyz"{
		fmt.Printf("v的编码为%v,字符为%c,类型为%T\n", v, v, v)
	}
}

运行结果:

四、字符串

字符串的格式化

        %v -- 按值本身输出

        %T -- 输出值的类型

        %b -- 整型以二进制方式显示

        %o -- 整型以八进制方式显示

        %x -- 整型以十六进制方式显示

        %X -- 整型以十六进制方式显示,字母显示为大写

        %f -- 浮点数

        %s -- 字符串

        %c -- 字符

package main

import "fmt"

func main(){
    //把格式化好的字符赋值给另一个变量
    format_str1 := fmt.Sprintf("name is %s", "sumeng")
    fmt.Println(format_str1)
    
    name := "sumeng"
    format_str2 := fmt.Sprintf("my name is %s", name)
    fmt.Println(format_str2)
}

运行结果:

统计字符串的长度

len()函数统计的是字符串所占用字节数,其中中文字符占3个字节

package main

import "fmt"

func main(){
    str1 := "xxyy"
    str2 := "中国"
    fmt.Println("字符串xxyy的长度为", len(str1))
    fmt.Println("字符串中国的长度为", len(str2))
}

运行结果:

循环输出每个字节

package main

import "fmt"

func main(){
    str1 := "xxyy中国"
    //该循环获取的是一个个字节(byte类型)表示,中文会被拆分输出
    for i := 0; i < len(str1); i++{
        fmt.Printf("%v(%c), type is %T\n", str1[i], str1[i], str1[i])
    }
    //该循环获取的是一个个字符,中文不会被拆分
    for _, v := range str1{
        fmt.Printf("%v(%c), type is %T\n", v, v, v)
    }
}

运行结果:

转义字符

        \t:表示一个制表符

        \n:表示一个换行符

        \\:表示反斜杠本身

        \r:表示一个回车(从当前的最前面开始输出,覆盖前面的内容)

注意:使用反引号定义字符串时,字符串会原样输出,不进行转义

package main

import "fmt"

func main(){
    str1 := "a\tb"
    fmt.Println(str1)
    //不进行转义
    str2 := `a\tb`
    fmt.Println(str2)
}

运行结果:

字符串的转换--strconv包

package main

import (
	"fmt"
	"strconv"
)

func main(){
    number1 := 10
    //int --> str
    str1 := strconv.Itoa(number1)
    fmt.Printf("str1 is %s, type is %T\n", str1, str1)
    //str --> int
    //返回两个值,若输入的值不能转换的话,e会拿到错误信息
    v, e := strconv.Atoi("10")
    fmt.Printf("v is %v, type is %T, error is %s", v, v, e)
}

运行结果:

string的常用方法--strings包

package main

import (
	"fmt"
	"strings"
)

func main(){
    str1 := "xixihaha"
    //strings.HasPrefix()用于检测字符串是否以指定的前缀开头
    if strings.HasPrefix(str1, "x"){
        fmt.Println("str1 start with x")
    }
    
    //strings.Count()计算字符串中指定字符的个数
    fmt.Println("字符h在字符串str1中的个数为", strings.Count(str1, "h"))
    
    //strings.Replace()返回将字符x替换为*的字符串
    //-1表示全部替换
    fmt.Println(strings.Replace(str1, "x", "*", -1))
}

 运行结果:

字符串的截取

截取格式:str[start:end]

package main

import "fmt"

func main(){
    str1 := "abcdefg"
    //左闭右开,没有负下标
    fmt.Println("截取字符串第3~5个字符:", str1[2:5])
}

运行结果:

五、布尔类型

各类型的默认值

package main

import "fmt"

func main(){
    //布尔类型默认值为false
    var a bool
    fmt.Println("布尔类型的默认值为", a)
    
    //int类型默认值为0
    var num int
    fmt.Println("整型的默认值为", num)
    
    //string类型默认值为空
    var str string
    fmt.Println("字符串类型的默认值为", str)
}

运行结果:

猜你喜欢

转载自blog.csdn.net/m0_69298614/article/details/129913216