Go语言基础
Go文件名
所有go源码文件都是以 .go 结尾的
Go标记
Go 程序有多个标记组成,包括关键字,标识符,常量,字符串,符号。
例如下面这条语句由6个标记组成:
fmt.Println("Hello,World!")
//下面一行是一个标记总共是6个标记
fmt
.
Println
(
"Hello,World!"
)
关键字
Go 只有25个关键字:
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还有 37 个保留字
Constants: true false iota nil
Types: int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error
Functions: make len cap new append copy close delete
complex real imag
panic recover
程序一般由关键字、变量、常量、运算符,类型和函数组成。
程序中可能会使用到这些分隔符: 括号(), 中括号 [] 和大括号 { }。
程序中可能会使用到这些标点符号:. , ; : ...
标识符
标识符用来 命令 变量、类型等程序实体,一个标识符实际上是由一个或者多个字母(大写或者小写)、数字(0-9)、下划线_ 所组成的序列,但是第一个字符 必须是字母或者下划线而不能是数字。
以下是有效标识符:
mahesh kumar abc move_name a_123
myname50 _temp j a23b9 retVal
以下是无效标识符:
1. 1ab(以数字开头)
2. case(Go 语言的关键字)
3. a+b(运算符是不允许的)
另外:以大写字母开头的标识符可导出
当标识符(包括常量、变量,类型,函数名,结构体字段等等)以一个大写字母开头,如:Group1,那么使用这种形式标识符对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象中的public) ;标识符如果以小写字母开头,则对外包是不可见的,但是他们在整个包的内部是可见的(像面向对象语言中的protected)。
总结:Go 的函数、常量、变量、自定义类型、包(package) 的命名方式遵循以下规则:
- 首字母可以是任意的Unicode 字符或者下划线
- 剩余字符可以是Unicode字符、下划线、数字
- 字符长度不限
Go 语言声明
有四种主要声明方式:
var (声明变量),const (声明常量),type (声明类型) ,func(声明函数)
GO程序保存在多个.go文件中,文件的第一行就是package XXX 声明,用来说明 该文件属于哪个包(package),package 声明下来就是import 声明(导入那些包),再下来是类型,变量,常量,函数的声明。
声明的位置决定其作用域:
- 声明在函数内部,是函数的本地值,类似
private - 声明在函数的外部,是对当前包可见(包内所有
.go文件都可见)的全局变量值,类似protect - 声明在函数外部且首字母大写是所有包可见的全局值,类似
public
不存在行分隔符
在 Go 程序中,一行代表一个语句结束。
不需要像 C 家族中的其他语言一样以分号 ;结尾,因为这些工作都将由Go编译器自动完成。
如果你打算将多个语句写在同一行,他们则必须使用 ; 人为区分,但是在时间开发总我们并不鼓励这种做法。
{ 不能单独放在一行
表示函数体开始的前花括号{ 不能单独放在一行
错误示例:
package main
import "fmt"
func main()
{
fmt.Println("Hello World!")
}
正确写法:
package main
import "fmt"
func main(){
fmt.Println("Hello World!")
}
实现字符串连接: +
package main
import "fmt"
func main() {
fmt.Println("Google" + "Runoob")
}
空格的使用
GO 语言中变量的声明必须使用空格隔开,空格的隔开会使用程序更加可读和美观。
var age int;
格式化字符串:fmt.Sprintf
Go 语言中可以使用 fmt.Sprintf 格式化字符串并赋值给新字符串:
package main
import (
"fmt"
)
func main() {
// %d 表示整型数字,%s 表示字符串
var stockcode=123
var enddate="2020-12-31"
var url="Code=%d&endDate=%s"
var target_url=fmt.Sprintf(url,stockcode,enddate)
fmt.Println(target_url)
}
fmt.Sprintf 格式化字符串的格式如下:
fmt.Sprintf(格式化样式, 参数列表…)
- 格式化样式,字符串形式,格式化符号以
%开头,%s字符串格式,%d十进制整数格式。 - 参数列表:多个参数以逗号分隔,个数必须与格式化样式中的个数一一对应,否则运行时会报错。
Go 字符串格式化符号:
| 格式 | 描述 |
|---|---|
%v | 按值的本来值输出 |
%+v | 在%v的基础上,对结构体字段和值进行展开 |
%#V | 输出Go语法格式的值 |
%T | 输出Go语言语法格式的类型和值 |
%% | 输出 % 本体 |
%b | 整数以二进制方式显示 |
%o | 整数以八进制方式显示 |
%d | 整数以十进制方式显示 |
%x | 整数以十六进制方式显示 |
%X | 整数以十六进制,字母大写方式显示 |
%U | Unicode 字符 |
%f | 浮点数 |
%p | 指针,十六进制方式显示 |