GO语言配置和基础语法应用(三)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
C语言是直接影响Go语言设计的语言之一。
Go是一门编译型语言Go语言的工具链将源代码及其依赖转换成计算机的机器指令译注静态编译。
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
Go语言的代码通过包package组织包类似于其它语言里的库libraries或者模块modules。一个包由位于单个目录下的一个或多个.go源代码文件组成目录定义包的作用。每个源文件都以一条package
声明语句开始这个例子里就是package main
表示该文件属于哪个包紧跟着一系列导入import的包之后是存储在这个文件里的程序语句。
main
包比较特殊。它定义了一个独立可执行的程序而不是一个库。在main
里的main
函数 也很特殊它是整个程序执行时的入口译注C系语言差不多都这样。main
函数所做的事情就是程序做的。当然了main
函数一般调用其它包里的函数完成很多工作如fmt.Println
。
必须告诉编译器源文件需要哪些包这就是跟随在package
声明后面的import
声明扮演的角色。hello world例子只用到了一个包大多数程序需要导入多个包。
import
声明必须跟在文件的package
声明之后。随后则是组成程序的函数、变量、常量、类型的声明语句分别由关键字func
、var
、const
、type
定义。
一个函数的声明由func
关键字、函数名、参数列表、返回值列表这个例子里的main
函数参数列表和返回值都是空的以及包含在大括号里的函数体组成。
命名
Go语言中的函数名、变量名、常量名、类型名、语句标号和包名等所有的命名都遵循一个简单的命名规则一个名字必须以一个字母Unicode字母或下划线开头后面可以跟任意数量的字母、数字或下划线。大写字母和小写字母是不同的heapSort和Heapsort是两个不同的名字。
GO语言中的关键字
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
声明
Go语言主要有四种类型的声明语句var、const、type和func分别对应变量、常量、类型和函数实体对象的声明。包一级的各种类型的声明语句的顺序无关紧要译注函数内部的名字则必须先声明之后才能使用。
package main
import (
"fmt"
"math"
)
func main() {
var a = "initial"
var b, c int = 1, 2//1.可以不指定变量类型通过变量值go会自行判断该变量的类型。
var d = true
var e float64//2.可以不指定变量类型通过变量值go会自行判断该变量的类型。
f := float32(e)//3.这种方式是省略了var但是这种方式能对新的变量使用对已经声明的变量使用会报错。
g := a + "foo"
fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
fmt.Println(g) // initialapple
const s string = "constant"
const h = 500000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}
注意三种变量的声明形式的作用都是一样的要么赋值可自动判断其类型要么不赋值指定变量类型就这么两点。还需要注意的是go的变量是如果被声明了那么必须使用不然会报错如果不想使用可以加上_=varName,表示为已抛弃的变量。
字符串可以直接用+拼接起来
请记住“:=”是一个变量声明语句而“=”是一个变量赋值操作。也不要混淆多个变量的声明和元组的多重赋值§2.4.1后者是将右边各个表达式的值赋值给左边对应位置的各个变量
i, j = j, i // 交换 i 和 j 的值
类型
一个类型声明语句创建了一个新的类型名称和现有类型具有相同的底层结构。新命名的类型提供了一个方法用来分隔不同概念的类型这样即使它们底层类型相同也是不兼容的。
type 类型名字 底层类型
补充后续会讲到的函数函数声明包括函数名、形式参数列表、返回值列表可省略以及函数体。
package tempconv
import "fmt"
type Celsius float64 // 摄氏温度
type Fahrenheit float64 // 华氏温度
const (
AbsoluteZeroC Celsius = -273.15 // 绝对零度
FreezingC Celsius = 0 // 结冰点温度
BoilingC Celsius = 100 // 沸水温度
)
func CToF(c Celsius) Fahrenheit { return Fahrenheit(c*9/5 + 32) }
func FToC(f Fahrenheit) Celsius { return Celsius((f - 32) * 5 / 9) }