Go语言基础语法与数据类型

Go语言结构

一个Go文件由以下几个部分编写而成:

  • 包声明 package 包名
  • 引入包 import "包名"
  • 函数 func 函数名(参数列表)
  • 变量 var 变量名 变量类型
  • 语句&表达式
  • 注释 // 和 /**/
注:文件夹名与包名没有直接关系,并非需要一致。

行分隔

Go程序可以不以分号结尾,该工作将由编译器自动完成。写分号不会报错,但GoLand会提示冗余。

但如果程序员一定要将多个语句写在同一行,则必须显式使用;做分隔,但在Go的逻辑下,不推荐在实际开发中使用这种写法。

注释

注释同C家族语言和Java。

// 单行注释

/*
多行注释
*/

标识符命名规则

标识符用来命名变量类型等程序实体,一个标识符是由一个或者多个大小写字母和数字以及下划线的字符序列,但是第一个字符必须是字母或者下划线而不能以数字开头。该命名规则其他编程语言也是相同的。

注:不能使用预留关键字来当标识符。

关键字

Go语言有25个关键字:

12345
breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

Go语言有36个预定义标识符:

123456789
intint8int16int32int64complexcomplex64complex128bool
uintuint8uint16uint32uint64uintptrfloat32float64imag
closecopyiotalenmakenewnilpanicappend
printprintlnrealrecoverstringtruefalsebytecap

Go语言数据类型

Go语言所支持的数据类型按类别可以分为四大类:

  1. 布尔型
    truefalse
  2. 数值型
    整型、浮点型、复数
  3. 字符串
    字符串是由单个字节连接起来的字符序列,Go采用UTF-8格式编码unicode文本。
  4. 派生类型
    • 指针(pinter)
    • 数组(array)
    • 结构体(struct)
    • 通道(channel)
    • 函数(function)
    • 切片(slice)
    • 接口(interface)
    • Map

数字型

整型
序号类型及描述
1uint8 无符号 8 位整型 (0 到 255)
2uint16 无符号 16 位整型 (0 到 65535)
3uint32 无符号 32 位整型 (0 到 4294967295)
4uint64 无符号 64 位整型 (0 到 18446744073709551615)
5int8 有符号 8 位整型 (-128 到 127)
6int16 有符号 16 位整型 (-32768 到 32767)
7int32 有符号 32 位整型 (-2147483648 到 2147483647)
8int64 有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

计算方式:
无符号:0 ~ 2的位数次方-1
有符号:-2的位数-1次方 ~ 2的位数-1次方减一

浮点型
序号类型和描述
1float32 IEEE-754 32位浮点型数
2float64 IEEE-754 64位浮点型数
3complex64 32 位实数和虚数
4complex128 64 位实数和虚数
其他类型

为了方便定义变量,Go也定义了以下数据类型:

序号类型和描述
1byte 类似 uint8
2rune 类似 int32
3uint 32 或 64 位
4int 与 uint 一样大小
5uintptr 无符号整型,用于存放一个指针

rune和unitptr是Go独创,其他类型别的编程语言也有,基本上可以说是博采众长。

参见:C\C#\Java\Python 基本数据类型比较

类型转换

Go语言中类型转换的语法如下:

type_name(expression)

实例:

package main

import "fmt"

func main() {
	sum := 155
	num := 8

	mean1 := sum / num
	mean2 := float32(sum) / float32(num)
	fmt.Println(mean1)
	fmt.Println(mean2)
}

注意类型转换只能由当前类型转向更精确表示数值的类型,而不能反过来,这样避免了精度损失。比如由整型转向浮点型,表示更精确了,但由浮点型转换整型小数部分会被抹去。


版权声明:本文为Solo95原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。