Go 语言编程 — 基本数据类型

举报
云物互联 发表于 2021/08/06 01:08:13 2021/08/06
1.7k+ 0 0
【摘要】 目录 文章目录 目录Golang 的数据类型基本数据类型布尔型(Boolean)数字类型(Numeric)整型浮点型其他 字符串类型(String)更改字符串数值多行字符串 Golang 的数据类型 Golang 的数据类型通常可以区分为: 基本类型:Boolean,Numeric,String 类型。派生类型:Array,Struct...

目录

Golang 的数据类型

在这里插入图片描述

Golang 的数据类型通常可以区分为:

  • 基本类型:Boolean,Numeric,String 类型。
  • 派生类型:Array,Struct,Slice,Map,Pointer,Function,Channel,Interface 类型。可以使用 type 语句构造。可以细分为:
    • Aggregate:Array,Struct。
    • Reference:Slice,Map,Pointer,Function,Channel。
    • Interface。

注:其中 Array,Struct 是定长的,而 Slice,Map 是变长的。

基本数据类型

布尔型(Boolean)

  • True
  • False

数字类型(Numeric)

整型

  • int8:有符号 8 位整型,[-128, 127]
  • uint8:无符号 8 位整型,[0, 255]
  • int16:有符号 16 位整型,[-32768, 32767]
  • uint16:无符号 16 位整型,[0, 65535]
  • int32:有符号 32 位整型,[-2147483648, 2147483647]
  • uint32:无符号 32 位整型,[0, 4294967295]
  • int64:有符号 64 位整型,[-9223372036854775808, 9223372036854775807]
  • uint64:无符号 64 位整型,[0, 18446744073709551615]

浮点型

  • float32:32 位浮点型数
  • float64:64 位浮点型数
  • complex64:32 位实数和虚数
  • complex128:64 位实数和虚数

其他

  • byte:uint8 的别名
  • rune:int32 的别名
  • uint:32 或 64 位,取决于操作系统
  • int:32 或 64 位,取决于操作系统
  • uintptr:无符号整型指针

字符串类型(String)

字符串的本质是一串固定长度的字符连接起来的字符序列。区别于 C 语言中的字符串是由若干个字符组成的,而 Golang 的字符串是由若干个字节连接起来的。

Golang 的字符串的字节使用 UTF-8 编码标识 Unicode 文本。字符串数据类型的定义很简单,使用双引号 “ " ” 或者反引号 “ ` ”来创建。区别在于:双引号之间的转义符会被转义,而反引号之间的字符保持不变。

另外,Golang 与 C 语言一样,单引号 “ ’ ” 用于标识一个字符。可以使用 string(char) 将一个字符转换成一个包含了单个字符的字符串。

var c = 'c'

  
 

示例:

package main

import "fmt"

func main() { var a string = "hello \n world" var b string = `hello \n world` fmt.Println(a) fmt.Println(b)
}

  
 

结果:

hello 
 world
hello \n world

  
 

更改字符串数值

注意,因为 Golang 中的字符串本质是由若干个(已编码)的字节组成的。所以,数据类型可以看作是一个常量类型,一旦赋值了就不能再修改。

var s = "hello world"
s[0] = 'c' // 报错

  
 

如果实在需要修改字符串,则应该这么做:

func main() { var s1 string = "hello" c := []rune(s1) // 将 s1 转换为 rune 数组。 c[0] = 'c' // 修改数组的第一个元数。 var s2 string = string(c) // 创建新的字符串 s2,强制类型转换 c 数值。 fmt.Println("%s \n", s2)
}

  
 

rune() 函数是 int32 的别名,用 UTF-8 进行编码。当我们需要遍历字符串的字符时,可以用于混换每个字节。

简而言之,为了获得字符串每个实际的字符,需要使用 rune 类型:

var s = "你好"
fmt.Println(len(s))
c := []rune(s)
fmt.Println(len(c),c)

  
 

结果:

6
2 [20320 22909]

  
 

多行字符串

当需要书写多行字符串时候需要注意,因为 Golang 会在每行的行末自动添加分号,所以字符串连接符 “+” 一定要放在换行的行末:

// 正确
s := "Starting part" + "Ending part"

// 错误
s := "Starting part" + "Ending part"

  
 

也可以考虑使用反引号,但此时 s 中也包含了换行符,因为反引号中间的字符会保持不变。所以通常用在多行打印的情况:

package main

import "fmt"
func main() { s := `Starting part Ending part` fmt.Println(s)
}

  
 

输出:

Starting part Ending part

  
 

文章来源: is-cloud.blog.csdn.net,作者:范桂飓,版权归原作者所有,如需转载,请联系作者。

原文链接:is-cloud.blog.csdn.net/article/details/107137044

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。