带你学够浪:Go语言基础系列 – 8分钟学基础语法

文章每周连续更新,原创不易,「三连」让更多人看到是对我最大的一定。可以微信搜索民众号「 后端手艺学堂 」第一时间阅读(一样平常比博客早更新一到两篇)

对于一样平常的语言使用者来说 ,20% 的语言特征就能够知足 80% 的使用需求,剩下在使用中掌握。

基于这一理论,Go 基础系列的文章不会刻意追求面面俱到,但该有知识点都市笼罩,目的是带你快跑遇上 Golang 这趟新车。

Hurry up , Let’s go !

一个好消息一个坏消息一个潜规则

Go 的语法类似 C 语言,你是从 C/C++ 语言过来的话学习成本很低,其他语言过来甚至没有编程基础也没关系,这门语言入门很轻松。

好消息是你的键盘得救了,在 Go 的天下里不用在每个语句后面加分号了,C 和C++ 程序员听了喜大普奔,键盘不那么容易磨损了。

坏消息带给习惯花括号换行的同伙,在 Go 中第一个花括号 { 不能换行写,必须写在统一行,否则编译不外!

潜规则是任何在 Go 中界说的变量必须使用,若是界说了变量不使用,编译不外!

怎么样?是不是感觉到满满的强横总裁味道?

实在约束多了,程序员自由发挥的空间变少,失足的概率也会大大降低,Google 的大佬们怕你犯错,操碎了心。

带你学够浪:Go语言基础系列 - 8分钟学基础语法

观点

Go 语言程序都由包组成,类似其他语言中的模块观点,主程序都从 main 包最先运行。

以是一个程序开头是下面的语句:

package main

在程序中也可以导入其他包,这样就可以使用其他包界说的函数或变量。

导入

导入包语法有多种姿势。

导入姿势一:单独导入

import os  // 导入 os 包
import fmt /* 导入 fmt 包*/

fmt 包:包内有格式化 IO 函数,类似 C 中的 stdio.h 和 C++ 中的 iostream ,初学者必备,导它!

os 包 :中实现了一些 操作系统函数,不依赖平台的接口

另外,关于注释,如你所见,完全就是 C 语言里的注释形式,///**/ 都是允许的。

导入姿势二:分组导入

import (
	"fmt"
	"os"
)

可以把需要的包,用括号放在一起导入。

导入姿势三:指定别名导入

可以在导入的时刻指定导入包的别名,这样在挪用包函数的时刻,可以直接使用包别名。

import f "fmt" // 用别名f 取代 fmt
f.Println("go go go") // 用 f 取代了 fmt 挪用 Println 函数

包导出名称约定

包中界说的函数或变量,若是是大写字母开头,那么它就是可以导出的,外部使用包的用户可以访问到,类似 C++ 中的 public 标识。相反,小写字母开头的名字外部无法使用,使用会报错。

// 如下,Println 和 Getenv 都是大写的名字
fmt.Println(os.Getenv("GOPATH"))

基本类型

内置类型

Go 语言内建的数据类型有下面这些,实在基本上看类型名字,就差不多能知道是什么类型了。

int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64 complex128 complex64
bool byte rune string error

平常用的最多的类型:

int 代表整型,在 32 位系统上通常为 32 位,在 64 位系统上则为 64 位。

string 字符串类型

bool 布尔类型,分 truefalse 两种值。

软链接 vs. 硬链接

建立类型

下面的语法建立一个新的类型,类似C++中的typedef语法。

type 新类型名字 底层类型

type ProgramType string  // 界说新类型 ProgramType
var t1 ProgramType = "Golang"
var t2 ProgramType = "C++"

不外Go中建立的新类型纵然底层类型是一致的也不能相互操作,这样起到很好的类型隔离作用

好比下面的代码,虽然ProgramTypeCompanyType 都是 string 类型,然则不能相互操作,下面举例说明:

type ProgramType string  // 界说新类型 ProgramType
type CompanyType string  // 界说新类型 ProgramType
var t2, t2 ProgramType = "Golang", "C++"
var c1, c2 CompanyType = "Google", "Tencent"
fmt.Println(t1+t2)       // 同类型相加正当
fmt.Println(t1+c1)		// 差别类型相加非法

类型转换

不像 C 中有隐式类型转换,在 Go 中 差别类型的项之间赋值时需要显式转换,否则编译会报错!语法上,相对于 C 语言的强制转换语法换了下括号的位置,Go 语法如下。

T(v) // 把值 v 转换为类型 T

举例:

var varint int = 66
var varf float32 = float32(varint)  // int 转换 float32
fmt.Printf("%T %v %T %v \n", varint, varint, varf, varf) // %T输出值的类型  %v输出值

变量

声明

Go 内里的变量声明实在和 C 语言差不多,唯一的区别是把变量类型放在在变量名字后面,另外多了一个 var 关键字标识。

var imVar int // 声明晰一个 int 类型的 imVar 变量

固然也可以多个同类型变量一起声明

var imVar1, imVar2, imVar3 int // 一口气声明晰三个 int 类型的变量

或者,多个差别类型的变量声明分组一起声明

var (
	   i int
    b bool
    s string
)

初始化

未初始化

未初始化的工具会被赋予零值,也就是默认值。

  • 数值类型初始值 0
  • 布尔类型初始值 false
  • 字符串为初始值 ""(空字符串)

通俗初始化

可以声明之后单个初始化

var imVar int
imVar = 6

也可以声明和初始化一步到位

var imVar0 int = 7

还可以批量声明加初始化一步到位

var imVar4, imVar5 int = 4, 5

多个差别类型的变量声明和初始化可以分组同时举行,像下面这样。

var (
    i int    = 1
    b bool   = false
    s string = "golang"
)

偷懒初始化

类型自动推导

若是初始化式右边的值是已存在确定类型的值,可以偷懒省略变量类型,伶俐的 Go 会自动推导类型。

var imVar4, imVar5 = 4, 5  // 省略了左边的 int 类型,自动推导imVar4, imVar5是int类型

简短初始化

在函数内部,可以使用简短赋值语句:=来取代 var 关键字声明并初始化变量。

imVar6, imVar7 := 8, 9  // 声明并初始化了 imVar6, imVar7

常量

常量用 const 关键字声明,而且声明之后必须紧接着赋值,常量可以是字符、字符串、布尔值或数值 ,注重:常量不能用 := 语法声明

const imCnt int = 1 // 带类型的常量界说
const imCnt1 = 1    // 省略类型的常量界说,自动推导类型

Go 语言内建下面几种常量

true false iota nil // 内建常量

函数

声明

函数用关键字 func 来声明,带参数列表,把返回值类型放在最后,下面界说了一个简朴的乘法函数,带两个整型参数,返回值也是整型。

func mult(i int, j int) int {
	return i * j
}

当函数参数类型相同时,可以只写最后一个参数的类型,下面这样简写也是可以的。

func mult(i, j int) int {
	return i * j
}

返回值

多返回值

函数返回值可以是一个,也可以是多个,下面的函数就返回了 i 的普通和 j 的平方两个返回值。

func more(i, j int) (int, int) {
	return i * i, j * j
}

返回值命名

前面例子只指定了返回值类型,可以指定返回值名称,这样加倍便于明白,同时,指定的名称可在函数内使用。

func retName(i, j int) (x, y int) {
	x = i * i
	y = j * j
	return x, y // 可用 return 取代,示意返回所有已命名的返回值。
}

总结

通过本文的学习,我们掌握了 Golang 中的几个基础观点和用法:包、基本数据类型、变量、常量、函数。这些语法基础是Golang 的下层修建,万丈高楼平地起,本节为后续学习打下了基础。

谢谢列位的阅读,文章的目的是分享对知识的明白,手艺类文章我都市频频求证以求最大水平保证准确性,若文中泛起显著纰漏也迎接指出,我们一起在探讨中学习.

今天的手艺分享就到这里,我们下期再见。

原创不易,不想被白票,若是在我这有收获,就动动手指「点赞」和「转发」是对我连续创作的最大支持。

可以微信搜索民众号「 后端手艺学堂 」回复「资料」「1024」有我给你准备的种种编程学习资料。文章每周连续更新,我们下期见!

原创文章,作者:28x29新闻网,如若转载,请注明出处:https://www.28x29.com/archives/11038.html