哪些网站是.net开发的,福州注册公司快点办,莆田外贸专业建站,近10天的时政新闻Go语言简介 go语言的特性#xff1a; 一个目录下的同级文件属于同一个包。 包名可以与其目录名不同 #xff1f;。 main包是Go语言程序的入口包#xff0c;一个Go语言程序必须有且仅有一个main包#xff0c;如果一个程序没有main包#xff0c;那么编译事就会出错#x…Go语言简介 go语言的特性 一个目录下的同级文件属于同一个包。 包名可以与其目录名不同 。 main包是Go语言程序的入口包一个Go语言程序必须有且仅有一个main包如果一个程序没有main包那么编译事就会出错无法生成可执行文件。(main函数只能声明在main包中) 导入的包中不能含有代码中没有使用的包否则Go编译器会出错。 import( name1 name2 ) func 函数名 (参数列表) (返回值列表) { 函数体 } go build 命令可以将Go语言程序代码编译成二进制的可执行文件但是需要我们手动运行该二进制文件 go run 命令则更加方便它会在编译后直接运行Go语言程序编译过程中会产生一个临时文件但不会生成可执行文件这个特点很适合用来调试程序
Go语言基本语法 var 变量名 变量类型 当一个变量被声明之后系统自动赋予它该类型的零值int 为 0float 为 0.0bool 为 falsestring 为空字符串指针为 nil 等。所有的内存在 Go 中都是经过初始化的 var (a intb stringc []float32d func() boole struct {x int}
) 名字 : 表达式 (简短变量声明被广泛用于大部分的局部变量的声明和初始化。var 形式的声明语句往往是用于需要显式指定变量类型地方或者因为变量稍后会被重新赋值而初始值无关紧要的地方) 定义变量同时显式初始化 不能提供数据类型 只能用在函数内部 匿名变量 _ 将被抛弃 作用域 Go语言会在编译时检查每个变量是否使用过一旦出现未使用的变量就会报编译错误。如果不能理解变量的作用域就有可能会带来一些不明所以的编译错误。 函数内定义的变量称为局部变量 函数外定义的变量称为全局变量 在函数体外声明的变量称之为全局变量全局变量只需要在一个源文件中定义就可以在所有源文件中使用当然不包含这个全局变量的源文件需要使用“import”关键字引入全局变量所在的源文件之后才能使用这个全局变量。全局变量声明必须以 var 关键字开头如果想要在外部包中使用全局变量的首字母必须大写 函数定义中的变量称为形式参数 Go语言同时提供了有符号和无符号的整数类型其中包括 int8、int16、int32 和 int64 四种大小截然不同的有符号整数类型分别对应 8、16、32、64 bit二进制位大小的有符号整数与此对应的是 uint8、uint16、uint32 和 uint64 四种无符号整数类型。 浮点类型 常量 math.MaxFloat32 表示 float32 能取到的最大数值大约是 3.4e38 常量 math.MaxFloat64 表示 float64 能取到的最大数值大约是 1.8e308 float32 和 float64 能表示的最小值分别为 1.4e-45 和 4.9e-324 一个 float32 类型的浮点数可以提供大约 6 个十进制数的精度而 float64 则可以提供约 15 个十进制数的精度通常应该优先使用 float64 类型因为 float32 类型的累计计算误差很容易扩散并且 float32 能精确表示的正整数并不是很大。 var f float32 16777216 // 1 24
fmt.Println(f f1) // true! 浮点数在声明的时候可以只写整数部分或者小数部分 const e .71828 // 0.71828
const f 1. // 1 很小或很大的数最好用科学计数法书写通过 e 或 E 来指定指数部分 const Avogadro 6.02214129e23 // 阿伏伽德罗常数
const Planck 6.62606957e-34 // 普朗克常数
用 Printf 函数打印浮点数时可以使用“%f”来控制保留几位小数 复数 Go语言中复数的类型有两种分别是 complex12864 位实数和虚数和 complex6432 位实数和虚数其中 complex128 为复数的默认类型 var name complex128 complex(x, y) name : complex(x, y) 对于一个复数z : complex(x, y)可以通过Go语言的内置函数real(z)来获得该复数的实部也就是 x通过imag(z)获得该复数的虚部也就是 y 复数也可以用和!进行相等比较只有两个复数的实部和虚部都相等的时候它们才是相等的 Go语言中不允许将整型强制转换为布尔型 定义字符串 可以使用双引号来定义字符串字符串中可以使用转义字符来实现换行、缩进等效果常用的转义字符包括 \n换行符 \r回车符 \ttab 键 \u 或 \UUnicode 字符 \反斜杠自身 在Go语言中使用双引号书写字符串的方式是字符串常见表达方式之一被称为字符串字面量string literal这种双引号字面量不能跨行如果想要在源码中嵌入一个多行字符串时就必须使用反引号 const str 第一行
第二行
第三行
\r\nfmt.Println(str) Go语言的字符有以下两种: 一种是 uint8 类型或者叫 byte 型代表了 ASCII 码的一个字符。 在 ASCII 码表中A 的值是 65使用 16 进制表示则为 41所以下面的写法是等效的 var ch byte 65 或 var ch byte \x41 //\x 总是紧跟着长度为 2 的 16 进制数 另外一种可能的写法是\后面紧跟着长度为 3 的八进制数例如 \377 另一种是 rune 类型代表一个 UTF-8 字符当需要处理中文、日文或者其他复合字符时则需要用到 rune 类型。rune 类型等价于 int32 类型 Go语言同样支持 UnicodeUTF-8因此字符同样称为 Unicode 代码点或者 runes并在内存中使用 int 来表示。在文档中一般使用格式 Uhhhh 来表示其中 h 表示一个 16 进制数。 在书写 Unicode 字符时需要在 16 进制数之前加上前缀\u或者\U。因为 Unicode 至少占用 2 个字节所以我们使用 int16 或者 int 类型来表示。如果需要使用到 4 字节则使用\u前缀如果需要使用到 8 个字节则使用\U前缀。 var ch int \u0041
var ch2 int \u03B2
var ch3 int \U00101234
fmt.Printf(%d - %d - %d\n, ch, ch2, ch3) // integer
fmt.Printf(%c - %c - %c\n, ch, ch2, ch3) // character
fmt.Printf(%X - %X - %X\n, ch, ch2, ch3) // UTF-8 bytes
fmt.Printf(%U - %U - %U, ch, ch2, ch3) // UTF-8 code point 格式化说明符%c用于表示字符当和字符配合使用时%v或%d会输出用于表示该字符的整数%U输出格式为 Uhhhh 的字符串 Unicode 包中内置了一些用于测试字符的函数这些函数的返回值都是一个布尔值如下所示其中 ch 代表字符 判断是否为字母unicode.IsLetter(ch) 判断是否为数字unicode.IsDigit(ch) 判断是否为空白符号unicode.IsSpace(ch) 类型 B 的值 类型 B(类型 A 的值) valueOfTypeB typeB(valueOfTypeA) 指针pointer在Go语言中可以被拆分为两个核心概念 类型指针允许对这个指针类型的数据进行修改传递数据可以直接使用指针而无须拷贝数据类型指针不能进行偏移和运算。 切片由指向起始元素的原始指针、元素数量和容量组成 每个变量在运行时都拥有一个地址这个地址代表变量在内存中的位置。Go语言中使用在变量名前面添加操作符前缀来获取变量的内存地址取地址操作 ptr : v // v 的类型为 T 其中 v 代表被取地址的变量变量 v 的地址使用变量 ptr 进行接收ptr 的类型为*T称做 T 的指针类型*代表指针 量、指针和地址三者的关系是每个变量都拥有地址指针的值就是地址 取地址操作符和取值操作符*是一对互补操作符取出地址*根据地址取出地址指向的值 变量、指针地址、指针变量、取地址、取值的相互关系和特性如下 对变量进行取地址操作使用操作符可以获得这个变量的指针变量。 指针变量的值是指针地址。 对指针变量进行取值操作使用*操作符可以获得指针变量指向的原变量的值。 Go语言还提供了另外一种方法来创建指针变量 new(类型) 堆heap堆是用于存放进程执行中被动态分配的内存段。它的大小并不固定可动态扩张或缩减。当进程调用 malloc 等函数分配内存时新分配的内存就被动态加入到堆上堆被扩张。当利用 free 等函数释放内存时被释放的内存从堆中被剔除堆被缩减 栈(stack)栈又称堆栈 用来存放程序暂时创建的局部变量也就是我们函数的大括号{ }中定义的局部变量。 在Go语言中你可以省略类型说明符 [type]因为编译器可以根据变量的值来推断其类型。 显式类型定义 const b string abc 隐式类型定义 const b abc