Golang基础语法:字符与字符串(三)--十安辰

十安辰 · · 784 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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,简书,掘金等平台博客--十安辰,喜欢的话,记得微信扫码关注我哦

极客印记


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:十安辰

查看原文:Golang基础语法:字符与字符串(三)--十安辰

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

784 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传