• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go语言基础知识-数据类型、变量和常量

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文将介绍go语言基本数据类型(整型、浮点型、字符串、布尔型等)、常量、变量,下文通过实例和文字描述上述内容。

1 基本数据类型

1.1 整型

整型分为无符号整型和有符号整型
uint8 无符号8位整型 (取值范围:0到255)
uint16 无符号16位整型 (取值范围:0到65535)
uint32 无符号32位整型 (取值范围:0到4294967295 约43亿)
uint64 无符号64位整型 (取值范围:0到18446744073709551615)

int8 有符号8位整型 (取值范围:-128到127)
int16 有符号16位整型 (取值范围:-32768到32767)
int32 有符号32位整型 (取值范围:-2147483648到2147483647 约43亿)
int64 有符号64位整型 (取值范围:-9223372036854775808 到9223372036854775807)

提示:
如果是64位操作系统, int默认是int64;32位操作系统默认是int32

1.2 浮点型

浮点型分为浮点数、实数和虚数
float32 32位浮点数
float64 64位浮点数
complex64 32位实数和虚数
complex128 64位实数和虚数

提示:
float不存在这个类型

1.3 字符串

字符串为一串固定长度的字符组合起来的字符序列。GO语言的字节使用UTF-8编码标识Unicode文本

1.4 布尔型

布尔型的值为常量true或false

1.5 其它派生类型

指针类型 (pointer)
数组类型 (array)
结构体类型(struct)
函数类型 (func)
切片类型 (slice)
集合类型 (set)
通道类型 (channel)
接口类型 (interface)

2 变量和常量

2.1 变量

三种声明方式

(1)指定变量类型,使用默认值(不赋值)
如: var v_val int (v_val默认为0)
提示:

  • bool型默认为false;
  • int 型默认为0;
  • float型默认为0;
  • pointer型默认为nil;

(2)根据值自动判定变量类型
如: var v_val = 10 (v_val默认为int型)

(3)省略var,自动判定变量及类型
如: v_val := 10 (v_val默认为int型)
提示: v_val不能是已经申明的变量,不能是全局变量

例子: 三种变量声明方式


  1. package main
  2. import . "fmt"
  3. func main() {
  4. var v_val1 int
  5. var v_val2 = 10
  6. v_val3 := 10
  7. Println(v_val1)
  8. Println(v_val2)
  9. Println(v_val3)
  10. }
  11. [[email protected] ex]# go run ./ex.go
  12. 0
  13. 10
  14. 10

例子:整型、浮点型、bool型和指针的默认值


  1. package main
  2. import . "fmt"
  3. func main() {
  4. var val1 int
  5. var val2 float32
  6. var val3 bool
  7. var val4 *int
  8. Println(val1)
  9. Println(val2)
  10. Println(val3)
  11. Println(val4)
  12. }
  13. [[email protected] ex]# go run ./ex.go
  14. 0
  15. 0
  16. false
  17. <nil>

全局和局部变量

全局变量:在函数体之外,可以被当前文件以及其他文件访问的变量
局部变量:在函数体之内,作用范围是该函数体的变量

多个变量声明

声明方式1,一般用于局部变量
var val1, val2, val3 int
val1, val2 val3 = 10, 11, 12

声明方式2,一般用于局部变量
var val1, val2, val3 = 10, 11.1, true

声明方式3,用于局部变量,不能用于全局变量
val1, val2, val3 := 10, 11.1, true

声明方式4,一般用于全局变量
var (
val1 int
val2 bool
)

例子


  1. package main
  2. import . "fmt"
  3. var (
  4. val1 int
  5. val2 bool
  6. )
  7. var val3, val4 int
  8. var val5, val6, val7 = 10, "cc", 1.1 /* 不能直接忽略某个元素*/
  9. func main(){
  10. val5 = 100 /* 全局定义重赋值, 使用val5 = 1.1报错,类型一致*/
  11. Println(val1, val2, val3, val4, val5, val6, val7)
  12. val5, val6 := 1.2, "cerry" /* 重新申明val5、val6的类型*/
  13. Println(val5, val6)
  14. }
  15. [[email protected] ex]# go run ./ex.go
  16. 0 false 0 0 100 cc 1.1
  17. 1.2 cerry

提示: 声明的变量必须被使用,否则报错

2.2 常量

一般常量

(1)显式类型定义
const str1 string = “hello”
(2) 隐式类型定义
const str2 = “hello”
(3)多个相同类型的声明
const str1, val1, val2 = “abc”, 4, 5.1
(4) 常量枚举
const (
default = 0
apple = 1
banana = 2
)

扩展知识: 使用unsafe包,计算所占字节大小


  1. package main
  2. import . "fmt"
  3. import "unsafe"
  4. const (
  5. a = "hello"
  6. b = len(a)
  7. c = unsafe.Sizeof(a)
  8. )
  9. func main(){
  10. Println(a, b, c)
  11. }
  12. [[email protected] ex]# go run ./ex.go
  13. hello 5 16

特殊常量iota

iota 表示默认从 0 开始自动加 1


  1. package main
  2. import . "fmt"
  3. func test() {
  4. const (
  5. a = iota //0
  6. b //1
  7. c //2
  8. d = "cc" //独立值,iota += 1
  9. e //继承d, "cc" iota += 1
  10. f = 100 //iota +=1
  11. g //继承f, 100 iota +=1
  12. h //继承f, 100 iota +=1
  13. i = iota //7,恢复计数
  14. j //8
  15. )
  16. Println(a,b,c,d,e,f,g,h,i,j)
  17. }

  18. 鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    上一篇:
    Deep Introduction to Go Interfaces.发布时间:2022-07-10
    下一篇:
    在树莓派上安装ROS:Raspbian系统、ROS2GO系统、ROS Kinectic系统发布时间:2022-07-10
    热门推荐
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap