Go数据类型、关键字、标识符- DateWhale开源学习

目录

Golang文件名

所有的go源码都是以 ".go" 结尾。`

Go语言命名

Go的函数、变量、常量、自定义类型、包(package)的命名方式遵循以下规则:

  • 首字符可以是任意的Unicode字符或者下划线
  • 剩余字符可以是Unicode字符、下划线、数字
  • 字符长度不限

Go语言声明

有四种主要声明方式:

var(声明变量), const(声明常量), type(声明类型) ,func(声明函数)。

Go的程序是保存在多个.go文件中,文件的第一行就是package XXX声明,用来说明该文件属于哪个包(package),package声明下来就是import声明,再下来是类型,变量,常量,函数的声明。

Go项目构建及编译

一个Go工程中主要包含以下三个目录:

src:源代码文件
pkg:包文件
bin:相关bin文件
  • 建立工程文件夹goproject
  • 在工程文件夹中建立src,pkg,bin文件夹
  • GOPATH中添加projiect路径 例e:/goproject
  • 如工程中有自己的包examplepackage,那在src文件夹下建立以包名命名的文件夹 例examplepackage
  • src文件夹下编写主程序代码代码goproject.go
  • examplepackage文件夹中编写examplepackage.go和 包测试文件examplepackage_test.go
  • 编译调试包
  • go build examplepackage
  • go test examplepackage
  • go install examplepackage
    这时在pkg文件夹中可以发现会有一个相应的操作系统文件夹如windows_386z, 在这个文件夹中会有examplepackage文件夹,在该文件中有examplepackage.a文件
  • 编译主程序
    • go build goproject.go
      成功后会生成goproject.exe文件
      至此一个Go工程编辑成功。

go 编译问题

golang的编译使用命令go build,go install;除非仅写一个main函数,否则还是准备好目录结构;GOPATH=工程根目录;其下应创建srcpkgbin目录,bin目录中用于生成可执行文件,pkg目录中用于生成.a文件; golang中的import name,实际是到GOPATH中去寻找name.a, 使用时是该name.a的源码中声明的package名字;

注意点:

  • 系统编译时go install abc_name时,系统会到GOPATHsrc目录中寻找abc_name目录,然后编译其下的go文件;
  • 同一个目录中所有的go文件的package声明必须相同,所以main方法要单独放一个文件,否则在eclipseliteide中都会报错;
    编译报错如下:(假设test目录中有个main.gomymath.go,其中main.go声明packagemainmymath.go声明packagtest);
$ go install test
can't load package: package test: found packages main (main.go) and test (mymath.go) in /home/wanjm/go/src/test

报错说 不能加载package test(这是命令行的参数),因为发现了两个package,分别时main.go 和 mymath.go;
  • 对于main方法,只能在bin目录下运行go build path_tomain.go; 可以用-o参数指出输出文件名;
  • 可以添加参数go build -gcflags "-N -l" ****,可以更好的便于gdb;详细可以参考http://golang.org/doc/gdb
  • gdb全局变量主一点。 如有全局变量a;则应写为p 'main.a';注意但引号不可少;

数据类型

按类别

  • 布尔型:只可以是常量true或者false
var b bool = true
  • 数字类型:整型和浮点型。

  • 位的运算采用补码字符串类型:字符串就是一串固定长度的字符连接起来的字符序列,Go 的字符串是由单个字节连接起来。

  • Go 语言的字符串的字节使用UTF-8编码标识Unicode文本

  • 复数:complex12864位实数和虚数)和complex6432位实数和虚数),其中 complex128为复数的默认类型。 注:

    • 复数的值由三部分组成 RE + IMi,其中 RE 是实数部分,IM是虚数部分,REIM均为 float类型,而最后的i是虚数单位。
      var name complex128 = complex(x, y)
      或者
      z := complex(x, y)
      x = real(z)
      y = imag(z)
      
    • 复数也可以用==!=进行相等比较,只有两个复数的实部和虚部都相等的时候它们才是相等的。

派生类型

  • 指针类型(Pointer
  • 数组类型
  • 结构化类型(struct)
  • Channel类型
  • 函数类型
  • 切片类型
  • 接口类型(interface
  • Map类型

基于架构

整型,同时提供了四种有符号整型,分别对应8163264bit(二进制)的有符号整数,与此对应四种无符号的整数类型
  • Uint8无符号8位整型 (0255)
  • Unit16
  • Unit32
  • Unit64
  • int8
  • int16
  • int32
  • int64
浮点型
  • float32
  • float64
  • complex64(实数虚数)
  • complex128
其他
  • byte
  • rune
  • uint
  • int
  • uintptr(无符号整型,存放一个指针)

** 注**:

  • 表示Unicode字符的rune类型和int32类型是等价的,通常用于表示一个Unicode码点,是等价的。
  • byteuint8也是等价类型,byte类型一般用于强调数值是一个原始的数据而不是一个小的整数。
  • 无符号的整数类型uintptr,它没有指定具体的bit大小但是足以容纳指针。只有在底层编程时才需要,特别是Go语言和C语言函数库或操作系统接口相交互的地方。
  • 有符号整数采用2的补码形式表示,也就是最高bit位用来表示符号位,一个n-bit的有符号数的取值范围是从 -2(n-1)2(n-1)-1。无符号整数的所有bit位都用于表示非负数,取值范围是 02n-1
  • 常量math.MaxFloat32表示float32能取到的最大数值,大约是3.4e38
  • 常量math.MaxFloat64表示float64能取到的最大数值,大约是1.8e308
  • float32float64能表示的最小值分别为1.4e-454.9e-324
  • 浮点数在声明的时候可以只写整数部分或者小数部分
const e = .71828 // 0.71828
const f = 1.     // 1
  • 很小或很大的数最好用科学计数法书写,通过eE来指定指数部分
const Avogadro = 6.02214129e23  // 阿伏伽德罗常数
const Planck   = 6.62606957e-34 // 普朗克常数

关键字

25个关键字或保留字

breakdefaultfuncinterfaceselectcasedefergomapstructchanelsegotopackageswitchconstfallthroughifrangetypecontinueforimportreturnvar

36 个预定义标识符

appendboolbytecapclosecomplexcomplex64complex128uint16copyfalsefloat32float64imagintint8int16uint32int32int64iotalenmakenewnilpanicuint64printprintlnrealrecoverstringtrueuintuint8uintptr

知识点
  • 程序一般由关键字、常量、变量、运算符、类型和函数组成。
  • 程序中可能会使用到这些分隔符:括号 (),中括号[] 和大括号{}
  • 程序中可能会使用到这些标点符号:.,;:

标识符

标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(A~ Za~ z)数字(0~9)、下划线“_”组成的序列,但是第一个字符必须是字母或下划线而不能是数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值