经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Go语言 » 查看文章
GoLand(三)数据类型、变量和常量
来源:cnblogs  作者:Infi_chu  时间:2018/12/21 10:46:06  对本文有异议

Infi-chu:

http://www.cnblogs.com/Infi-chu/

一、数据类型
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。Go语言按类别有以下几种数据类型:
1.布尔型
两个常量,true和false。
eg.

  1. var a bool = true

 
2.数字类型
整型int,浮点型float32、float64


3.字符串类型
Go语言的字符串的字节使用UTF-8编码标识Unicode文本。


4.派生类型
指针类型、数组类型、结构化类型、Channel类型、函数类型、切片类型、接口类型、Map类型

二、数字类型
(基于架构的类型)
1.uint8
无符号8位整型[0,255]
2.uint16
无符号16位整型[0,65535]
3.uint32
无符号32位整型[0,4294967295]
4.uint64
无符号64位整型[0,18446744073709551615]
5.int8
有符号8位整型[-128,127]
6.int16
有符号16位整型[-32768,32767]
7.int32
有符号32位整型[-2147483648,2147483647]
8.int64
有符号64位整型[-9223372036854775808,9223372036854775807]

(浮点类型)
1.float32
IEEE-754 32位浮点型数
2.float64
IEEE-754 64位浮点型数
3.complex64
32 位实数和虚数
4.complex128
64 位实数和虚数

(其他数字类型)
1.byte
类似 uint8
2.rune
类似 int32
3.uint
32 或 64 位
4.int
与 uint 一样大小
5.uintptr
无符号整型,用于存放一个指针

三、变量
1.变量声明
第一种,先声明,不赋值

  1. var a string


2.根据值自动判断变量类型

  1. var b = 1


3.省略var,:=左侧的变量先前不能被声明过

  1. c := 2

 
4.多变量声明

  1. //类型相同多个变量, 非全局变量
  2. var a1, a2, a3 int
  3. a1, a2, a3 = 1, 2, 3
  4. var b1, b2, b3 = 1, 2, 3 //和python很像,不需要显示声明类型,自动推断
  5. c1, c2, c3 := 1, 2, 3 //出现在:=左侧的变量先前不能被声明过
  6.  
  7. // 这种因式分解关键字的写法一般用于声明全局变量
  8. var (
  9. d1 int
  10. d2 string
  11. )

 
四、常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
1.格式:

  1. // 单常量声明
  2. // const 标识符 [类型] = value // 类型为可选项
  3. // 多常量声明
  4. // const a,b = 1,2
  5.  
  6. package main
  7.  
  8. import "fmt"
  9.  
  10. func main() {
  11. const LENGTH int = 10
  12. const WIDTH int = 5
  13. var area int
  14. const a, b, c = 1, false, "str" //多重赋值
  15.  
  16. area = LENGTH * WIDTH
  17. fmt.Printf("面积为 : %d", area)
  18. println()
  19. println(a, b, c)
  20. }

 
2.iota
iota,特殊常量,可以认为是一个可以被编译器修改的常量。iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

eg1

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

 
eg2

  1. package main
  2.  
  3. import "fmt"
  4. const (
  5. i=1<<iota
  6. j=3<<iota
  7. k
  8. l
  9. )
  10.  
  11. func main() {
  12. fmt.Println("i=",i)
  13. fmt.Println("j=",j)
  14. fmt.Println("k=",k)
  15. fmt.Println("l=",l)
  16. }
  17.  
  18. // i=1:左移 0 位,不变仍为 1;
  19. // j=3:左移 1 位,变为二进制 110, 即 6;
  20. // k=3:左移 2 位,变为二进制 1100, 即 12;
  21. // l=3:左移 3 位,变为二进制 11000,即 24。

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号