目录
字符类型
基本介绍
定义使用
布尔类型
基本介绍
定义使用
字符串
基本介绍
定义使用
常用方法
字符一般由以下两种类型
1.字符是用单引号('')括起来的单个字符
package main
import "fmt"
func main() {
var c1 byte = 'a'
fmt.Println(c1) //直接输出byte值:ascii表中对应的数值:97
fmt.Printf("c1=%c\n", c1) //格式化输出对应字符:c1=a
//如果我们保存的字符在 ASCII 表的,比如[0-1, a-z,A-Z..]直接可以保存到byte,如果我们保
存的字符对应码值大于 255,这时我们可以考虑使用 int 类型保存
var c2 int = '中'
fmt.Println(c2) // 20013
var c3 byte = '9'
fmt.Println(c3) // 57
}
package main
import "fmt"
func main() {
var c1 byte = 'a'
fmt.Println(c1) //直接输出byte值:ascii表中对应的数值:97
var c2 byte = 'a' + 1
fmt.Println(c2) //直接输出byte值:ascii表中对应的数值+1:98
}
var c3 char = ‘\n’ // '\n'表示换行符
- 布尔类型变量的默认值为
false
。- Go 语言中不允许将整型强制转换为布尔型.
- 布尔型无法参与数值运算,也无法与其他类型进行转换。
package main
import (
"fmt"
"unsafe"
)
func main() {
var c1 = false
fmt.Println(c1)
var c2 = true
fmt.Println(c2)
fmt.Println(unsafe.Sizeof(c2)) //字节大小
}
字符串就是一串固定长度的字符连接起来的字符序列。 Go 的字符串是由单个字节连接起来的。 Go语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本
1.采用双引号和反引号定义
(1) 双引号 , 会识别转义字符(2) 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
package main
import (
"fmt"
"unsafe"
)
func main() {
// 双引号转义输出
var c1 = "姓名"
fmt.Println(c1)
// 反引号原义输出
var c2 = `
import (
"fmt"
"unsafe"
)
func main() {
var c1 = "姓名"
fmt.Println(c1)
}
`
fmt.Println(c2)
fmt.Println(unsafe.Sizeof(c2)) //字节大小
}
2.字符串一旦赋值了,字符串的值就不能修改了:在 Go 中字符串是不可变的
1 字符串拼接
方式1: +
var c1 = "姓名" + "a"
// 拼接一个很长的字符串时,可以分行但注意 需要将+保留在上一行
var c1 = "姓名" + "a"+
"b"
fmt.Println(c1) // 姓名ab
Golang 和 java / c 不同,Go 在不同类型的变量之间赋值时需要显式转换。也就是说 Golang 中数据类型不能自动转换
将值 v 转换为类型 T : var 变量名 = T(v)
T : 就是数据类型,比如 int32 , int64 , float32 等等v : 就是需要转换的变量
示例
方式1:字符串拼接
// 类似于python中字符串拼接
fmt.Sprintf(数据类型, 变量)
package main
import "fmt"
func main() {
// 想定义空的字符串,后续字符串拼接转换用
var str string
//1.整型类型转string,可以是int,int8,int64 ,uint等
var num1 int = 99
str = fmt.Sprintf("%d", num1)
fmt.Printf("整型转string 类型:%T, str:%q\n", str, str)
//2.浮点型转string,可以是float32,float64
var num2 float64 = 23.456
str = fmt.Sprintf("%f", num2)
fmt.Printf("float转string 类型:%T, str:%q\n", str, str)
//3.布尔类型转string
var num3 bool = true
str = fmt.Sprintf("%t", num3)
fmt.Printf("bool转string 类型:%T, str:%q\n", str, str)
//4.字符类型转string:可以是byte,rune
var num4 byte = 'h'
str = fmt.Sprintf("%c", num4)
fmt.Printf("byte转string 类型:%T, str:%q\n", num4, str)
}
方式2:strconv
中文文档
package main
import (
"fmt"
"strconv"
)
func main() {
// 想定义空的字符串,后续字符串拼接转换用
var str string
/* 1.整型转stringfunc
FormatInt(i int64, base int)
strconv.FormatInt(int64类型数据, 进制)
返回i的base进制的字符串表示。base 必须在2到36之间,结果中会使用小写字母'a'到'z'表示大于10的数字。
*/
var num1 int = 99
str = strconv.FormatInt(int64(num1), 10)
fmt.Printf("整型转string 类型:%T, str:%q\n", str, str)
/* 2.整型转string
Itoa(i int) string
strconv.Itoa(整型数据类型)
*/
var a int = 1
str = strconv.Itoa(a)
fmt.Printf("整型转string 类型:%T, str:%q\n", str, str)
/*
2.其他类型转string参考文档
*/
}
1. string转bool
package main
import (
"fmt"
"strconv"
)
func main() {
/*
ParseBool(str string) (value bool, err error)
它接受1、0、t、f、T、F、true、false、True、False、TRUE、FALSE;否则返回错误。
*/
var str1 = "true"
var e error
var num1 bool
num1, e = strconv.ParseBool(str1)
fmt.Printf("num1=%v e=%v", num1, e) //num1=true e=
}
2.string转整型
package main
import (
"fmt"
"strconv"
)
func main() {
/*
func ParseInt(s string, base int, bitSize int) (i int64, err error)
返回:字符串表示的整数值,接受正负号。
base:指定进制(2到36),如果base为0,则会从字符串前置判断,"0x"是16进制,"0"是8进制,否则是10进制;
bitSize:指定结果必须能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64;
返回的err:是*NumErr类型的,如果语法有误,err.Error = ErrSyntax;如果结果超出类型范围err.Error = ErrRange。
*/
var str1 = "123456"
var e error
var n1 int64
n1, e = strconv.ParseInt(str1, 10, 0) //接受的变量要是int64类型的
fmt.Printf("n1=%v e=%v\n", n1, e) //num1=true e=
var n2 int
n2 = int(n1)
fmt.Printf("n2=%v", n2) //n2=123456
}
3. string转float
package main
import (
"fmt"
"strconv"
)
func main() {
/*
ParseFloat(s string, bitSize int) (f float64, err error)
解析一个表示浮点数的字符串并返回其值。
如果s合乎语法规则,函数会返回最为接近s表示值的一个浮点数(使用IEEE754规范舍入)。
bitSize:指定了期望的接收类型,32是float32(返回值可以不改变精确值的赋值给float32),64是float64;
返回值err是*NumErr类型的,语法有误的,err.Error=ErrSyntax;结果超出表示范围的,返回值f为±Inf,err.Error= ErrRange。
*/
var str1 = "1234.56"
var e error
var f1 float64
f1, e = strconv.ParseFloat(str1, 64) //接受的变量要是int64类型的
fmt.Printf("n1=%v e=%v\n", f1, e) //n1=1234.56 e=
}
4.其他类型参考文档
5.注意
在将String 类型转成 基本数据类型时,要确保String 类型能够转成有效的数据,比如 我们可以把 "123" , 转成一个整数,但是不能把 "hello" 转成一个整数,如果这样做,Golang 直接将其转成数据类型的默认值 即整型的默认值 0 ,其它 类型也是一样的道理. float => 0 bool => false