乐趣区

关于golang:Go语法基础

典型的 Go 文件布局

  1. package 子句
  2. 任何 import 语句
  3. 理论代码
// 每个 Go 文件都以 package 子句结尾,示意文件中的所有其余代码都属于“main”包
package main

// Go 文件简直总是有一个或多个 import 语句
import "fmt"

// 当程序运行时,首先运行“main”函数
func main() {
    // 通过从“fmt”包调用“Println”函数来实现在终端上显示内容
    fmt.Println("Hello, World!")
}

文件须要先引入其余包,而后能力应用其余包里蕴含的代码。

调用函数

调用函数,须要输出函数名,以及一对圆括号。

函数能够接管一个或多个参数,参数呈现在函数名前面的圆括号中,多个参数用逗号分隔。

字符串

字符串是一系列字节,通常示意文本字符。

Go 把双引号之间的文本视为字符串。

在字符串中,换行符、制表符和其余难以蕴含在程序代码中的字符能够用转义序列来示意:反斜杠后跟示意另一个字符的字符。

\n 示意换行符
\t 示意制表符
\" 示意双引号
\\ 示意反斜杠

fmt.Println("Hello, \nWorld!")
Hello,
World!
fmt.Println("Hello, \tWorld!")
Hello,  World!
fmt.Println("\"\"")""
fmt.Println("\\")
\

符文

Go 的符文(rune)用于示意单个字符。

字符串字面量由双引号(””)突围,rune 字面量由单引号(”)突围。

Go 应用 Unicode 规范来存储 rune,rune 被保留为数字代码,而不是字符自身。

转义序列能够用在 rune 字面量中。

fmt.Println('a')
97

布尔值

布尔值只能是两个值中的一个:true 或 false。

数字

Go 将整数和浮点数视为不同的类型,能够应用小数点来辨别整数和浮点数。

运算符

算术运算符

赋值运算符

关系运算符

逻辑运算符

类型

Go 是动态类型,它在程序运行之前就晓得值的类型是什么,如果在谬误的地位应用了谬误的值类型,Go 会给出一个谬误音讯。

能够通过 reflect 包的 TypeOf 函数查看类型:

fmt.Println(reflect.TypeOf(3.1415))
float64

根本类型

类型 长度 默认值 形容
bool 1 false
byte 1 0 unit8
int,unit 4,8 0 默认整数类型,保留数字。32 或 64
int8,unit8 1 0
int16,unit16 2 0
int32,unit32 4 0
int64,unit64 8 0
float32 4 0.0
float64 8 0.0 默认浮点数类型,保留带小数局部的数字。
complex64 8
complex128 16
rune 4 0
unitptr 4,8 0
string “”

申明变量

Go 中,变量是蕴含值的一块存储。

应用 var 关键字,后跟所需的名称以及变量将保留的值的类型。

变量申明规范格局:

var 变量名 变量类型

a. 后置变量类型
b. 变量命名规定遵循驼峰命名法
c. 申明变量后,零碎会主动赋予该类型零值
d. 申明但未应用的变量会被视为谬误

var quantity int
// 能够一次申明批准类型的多个变量
var length, width float64
var name string

初始化变量

申明变量后,能够应用 =(单等号)为它调配该类型的值

quantity = 8
length, width = 1.2, 2.4
name = "hello go"

如果晓得变量的值是什么,能够申明变量的同时进行赋值(申明变量并赋值)。

变量初始化规范格局

var 变量名 变量类型 = 表达式
var quantity int = 8
var length, width float64 = 1.2, 2.4
var name string = "hello go"

能够为现有变量调配新值,但他们必须是雷同类型的值(调配的类型与申明的类型要匹配)。

如果在申明变量的同时为其赋值,通常能够在申明中省略变量类型,调配给变量的值的类型将用作该变量的类型。

变量初始化推导格局

var 变量名 = 表达式
var quantity = 8
var length, width = 1.2, 2.4
var name = "hello go"

变量初始化短格局

变量名 := 表达式
quantity := 8
length, width := 1.2, 2.4
name := "hello go"

短变量申明

  • 在函数中,:= 简洁赋值语句在明确类型的中央,能够用于代替 var 定义。
  • 函数外的每个语句都必须以关键字开始 (varfunc、等等),:= 构造不能应用在函数外。

变量作用域

  • 全局变量作用域为整个包
  • 局部变量的作用域由花括号决定,任一变量的作用域仅在所处花括号内

零值

如果申明一个变量而没有给他赋值,该变量将蕴含其类型的零值。

  • 数值类型的零值是 0
  • 字符串类型的零值是空字符串 “”
  • 布尔类型的零值是 false

命名规定

实用于变量、函数和类型的名称:

  • 名称必须以字母结尾,并且能够由任意数量的额定的字母和数字。
  • 如果变量、函数或类型的名称以大写字母结尾,则认为它是导出的,能够从以后包之外的包拜访它。如果变量、函数或类型的名称是以小写字母结尾的,则认为该名称是为导出的,只能在以后包中应用。
  • 如果一个名称由多个单词组成,倡议用驼峰模式命名。

转换

Go 中的数学运算和比拟运算要求蕴含的值具备雷同的类型。如果类型不同,在运行代码时会报错。

转换,容许将值从一种类型转换为另一种类型。

数值类型(byterune, intX, uintX, floatX)之间的转换须要通过类型强转来实现

var price int = 2
// float64:须要转换的类型 price:须要转换的值
float64(price)
var a int32 = 123
var b int64 = int64(a)

数值类型和 string 之间的转换通过 规范库 strconv 中提供的函数进行

// string 到 int
int, err := strconv.Atoi(string)

// string 到 int64
int64, err := strconv.ParseInt(string, 10, 64)

// int 到 string
string := strconv.Itoa(int)

// int64 到 string
string := strconv.FormatInt(int64, 10)

Go 工具

退出移动版