Golang基础语法:字符与字符串(三)
字符
字符基本介绍
Golang中没有专门的字符类型,如果要存储单个字符(字母),一般使用byte来保存。这点不同于c和c++使用char来存储。
Golang 使用的是UTF-8的Unicode编码,可以很方便地表示汉字,如果有小伙伴学过python就知道,python源代码上面总是有一行 \# -*- coding: UTF-8 -*-
代码,这行代码就是引入了中文编码,这样你在控制台打印中文字符的时候才不会报错,而Golang是21世纪的新语言,在开发之初就考虑到了这样的问题,开发者可以不用考虑编码问题,大胆地输出吧!
字符串就是- -串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。也就是说对于传统的字符串是由字符组成的,而Go的字符串不同,它是由字节组成的。
package main
import (
"fmt"
)
//演示golang中字符类型使用
func main() {
var c1 byte = 'a'
var c2 byte = '0' //字符的0
//当我们直接输出byte值,就是输出了的对应的字符的码值
// 'a' ==>
fmt.Println("c1=", c1)
fmt.Println("c2=", c2)
//如果我们希望输出对应字符,需要使用格式化输出
fmt.Printf("c1=%c c2=%c\n", c1, c2)
//var c3 byte = '北' //overflow溢出
var c3 int = '北' //overflow溢出
fmt.Printf("c3=%c c3对应码值=%d\n", c3, c3)
//可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode 字符
var c4 int = 22269 // 22269 -> '国' 120->'x'
fmt.Printf("c4=%c\n", c4)
//字符类型是可以进行运算的,相当于一个整数,运输时是按照码值运行
var n1 = 10 + 'a' // 10 + 97 = 107
fmt.Println("n1=", n1)
}
以上代码输出为:
c1= 97
c2= 48
c1=a c2=0
c3=北 c3对应码值=21271
c4=国
n1= 107
以上代码需要注意的是:
1、如果我们保存的字符在ASCII表的,比如[0-1, a-z,A-Z..]直接可以保存到byte
2、如果我们保存的字符对应码值大于255,这时我们可以考虑使用int类型保存
3、如果我们需要安装字符的方式输出,这时我们需要格式化输出,即fmt. Printf(“%c", c1)
字符类型的使用细节
1、字符常量是用单引号(")括起来的单个字符。例如: varcl byte='a'
varc2 int='
中’var c3 byte= '9'
2、 Go中允许使用转义字符' 来将其后的字符转变为特殊字符型常量。例如: varc3 char =‘n’
,’\n'表示换行符
3、Go语言的字符使用UTF-8编码,如果想查询字符对应的utf8码值,请打开 http://www.mytju.com/classcode/tools/encode_utf8.asp
需要我们注意的是:英文字母是1个字节,而汉字是3 个字节
4、在Go中,字符的本质是一个整数,直接输出时,是该字符对应的UTF-8编码的码值。
5、可以直接给某个变量赋一个数字,然后按格式化输出时%c,会输出该数字对应的unicode字符
如:
var c int = 24352 // 24352 -> '张' 120->'x'
fmt.Printf("c=%c\n", c)
//输出为“c=张”
6、字符类型是可以进行运算的,相当于一个整数,因为它们都对应有Unicode码.
var n = 10 + 'a' // 10 + 97 = 107
fmt.Println("n1=", n1)
//输出为:"n1 = 107 "
//"n1 = k"
对于字符类型的本质的探讨
1、字符型存储到计算机中,需要将字符对应的码值(整数)找出来
存储: 字符 --> 对应码 ---> 二进制 -> 存储
读取: 二进制 --> 码值 ---> 字符 -> 读取
2、字符和码值的对应关系是通过字符编码表决定的(是规定好)
3、Go语言的编码都统一成了 utf-8
。 非常的方便,很统一,小伙伴们再也没有编码乱码的困扰了~
字符串string类型
基本结束
字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8
编码标识Unicode文本
例如:
//string类型使用演示
fun main(){
var addrees string = "北京 北邮 沙河 hello world!"
fmt.Println(address)
}
输出为:
北京 北邮 沙河 hello world!
string使用注意事项和细节
1、Go语言的字符串的字节使用UTF-8
编码标识Unicode文本,这样Golang统一使用 UTF-8
编码,中文乱码问题不会再困扰程序员。
2、字符串一旦赋值了,字符串就不能修改了:在Go中字符串是不可变的。
3、字符串的两种表示形式
- 双引号,会识别转义字符.
- 反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击、输出源代码等效果
例子:
package main
import (
"fmt"
)
//演示golang中string类型使用
func main() {
//输出源代码等效果 【案例演示】
str2 := "abc\nabc"
fmt.Println(str2)
//使用的反引号 ``
str3 := `
package main
import (
"fmt"
"unsafe"
)
//演示golang中bool类型使用
func main() {
var b = false
fmt.Println("b=", b)
//注意事项
//1. bool类型占用存储空间是1个字节
fmt.Println("b 的占用空间 =", unsafe.Sizeof(b) )
//2. bool类型只能取true或者false
}
`
fmt.Println(str3)
}
4、字符串拼接方式
例子:
var str = "hello" + "北京"
str += "666"
5、当一行字符串太长时,需要使用到多行字符串,可以如下处理
//记得+号要放在上面一行,若没有,系统会将其将其当作单独一行
str4 := "hello " + "world" + "hello " + "world" + "hello " +
"world" + "hello " + "world" + "hello " + "world" +
"hello " + "world"
fmt.Println(str4)
所有文章首发平台是微信公众号-极客印记,同步发布到CSDN,简书,掘金等平台博客--十安辰,喜欢的话,记得微信扫码关注我哦
有疑问加站长微信联系(非本文作者)