Go 语言基础

113 阅读5分钟

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) 的命名方式遵循以下规则:

  1. 首字母可以是任意的Unicode 字符或者下划线
  2. 剩余字符可以是Unicode字符、下划线、数字
  3. 字符长度不限

Go 语言声明

有四种主要声明方式:

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

GO程序保存在多个.go文件中,文件的第一行就是package XXX 声明,用来说明 该文件属于哪个包(package),package 声明下来就是import 声明(导入那些包),再下来是类型,变量,常量,函数的声明。
声明的位置决定其作用域:

  1. 声明在函数内部,是函数的本地值,类似 private
  2. 声明在函数的外部,是对当前包可见(包内所有 .go文件都可见)的全局变量值,类似 protect
  3. 声明在函数外部且首字母大写是所有包可见的全局值,类似 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(格式化样式, 参数列表…)
  1. 格式化样式,字符串形式,格式化符号以% 开头,%s 字符串格式,%d 十进制整数格式。
  2. 参数列表:多个参数以逗号分隔,个数必须与格式化样式中的个数一一对应,否则运行时会报错。

Go 字符串格式化符号:

格式描述
%v按值的本来值输出
%+v%v的基础上,对结构体字段和值进行展开
%#V输出Go语法格式的值
%T输出Go语言语法格式的类型和值
%%输出 % 本体
%b整数以二进制方式显示
%o整数以八进制方式显示
%d整数以十进制方式显示
%x整数以十六进制方式显示
%X整数以十六进制,字母大写方式显示
%UUnicode 字符
%f浮点数
%p指针,十六进制方式显示