关于golang:拓展学习golang的基础语法和常用开发工具

46次阅读

共计 3653 个字符,预计需要花费 10 分钟才能阅读完成。

golang 的根底语法

golang 的根底语法和其余语言大部分都差异不大,如果咱们有学习过其余语言,比方 JavaScript,php,java,python 等,有其余语言的语法根底,那么咱们学习 golang 将更容易上手。那咱们间接开始介绍 golang 的语法吧。

正文

正文分单行正文和多行正文。golang 的正文和其余的开发语言的正文是一样的。双斜杠示意单行正文,/**/ 示意多行正文。

// 单行正文这么结尾
/* 
  多行正文
*/

定义包名

一般来说,应用开发工具的时候,包名是不须要手动输出的,开发工具会在创立文件的时候,主动生成包名。

比方定义一个包名称为 main 的包:

package main // 定义一个名称为 main 的包
  • 每个 go 文件中必须定义包名来指明该文件归属于哪个包,而且定义包名必须在文件中非正文的第一行;
  • go 文件中若存在程序入口(main 函数),则该文件定义的包名必须为 main;
  • 一个文件中有且只有一次定义,即只有一行 package 语句;
  • 包名和文件名没有必然联系,能够不同。

导入依赖库

依赖库分为零碎库和第三方依赖库。导入形式有两种,单行导入和合并导入。个别上开发工具会主动帮忙解决。援用一个包的时候,应用单行,须要援用多个包的时候,会主动合并援用。

留神:导入的包都必须应用,若没有应用编译时将报错。所以不要引入无用的包。

import "fmt"
import (
    "os"
    "strings"
    "gorm.io/gorm"
    "github.com/kataras/iris/v12"
)

函数

func 是函数定义的关键字,函数体用 {} 突围,留神:{(左括号)不能独自成行,必须和 main()在同一行。函数名小写的时候示意这个函数是公有函数,函数名大写的时候,示意这个函数是公开函数,公开函数能够全局拜访,公有函数只能在本人的包内拜访。

func main(){fmt.Println("Hello World")
}

函数调用

函数的调用形式分 2 种,同一个包内的函数调用,能够间接写函数名称就能够,不同包之间的调用,须要引入对方的包,而后通过包名. 函数名的形式调用。

比方下方的函数调用是调用了 fmt 包的 Println 函数。

fmt.Println("Hello World")

变量、常量、占位符、运算符、数组、指针、构造体

变量

变量应用之前,须要先申明。变量的申明分几种形式。一种是在结尾的时候申明,应用 var 关键词来申明变量,另一种是在应用的时候申明,应用 := 来申明和赋值。还有一种是合并申明。不过尽量独自申明。

var a int = 1     // 第一种: var 变量名 变量值
value := 2        // 第二种: value_name := 1
var b, c, d = 1, 2, 3     // 第三种: 合并申明
var(                      // 第四种: 合并申明
      value1 int      = 3
      value2 string = "Hello World"
)

上述有三种变量申明形式,var 是 golang 的关键词,用于变量的申明。第一、三和四种能够在任意中央申明,当定义在函数体外时相当于全局变量;而第二种只能在函数体内申明,相当于局部变量。变量在申明后若不手动定义,编译器将为其赋值为相应的默认值

留神:golang 中的变量、办法、构造体等等的名称都举荐应用驼峰命名法,而名字的首字母如果是小写字母则示意在包 (package) 内可见;而如果是大写字母则示意包外可见。

常量

const var a int = 1
const var (
        b int = 2
        c string = "Hello World"
)

常量通过关键词 const 来定义。常量同样有单行申明和合并申明,申明时必须定义,定义后不可批改。

占位符

_ , a = myFunction()

function()函数有两个返回值,第一个返回值赋给_,第二个返回值赋给 a,此时的 就称做占位符,能够了解为仅仅为了给第一个返回值有地位寄存即可,这个返回值我再也不会用到;如果这个返回值之后还可能用到,则不能赋给 ,否则今后无奈再应用。

运算符

golang 的运算符包含:

  • 算术运算符:+相加、-相减、*相乘、/相除、%求余、++自增、--自减。
  • 关系运算符:==查看两个值是否相等、!=查看两个值是否不相等、>查看右边值是否大于左边值、<查看右边值是否小于左边值、>=查看右边值是否大于等于左边值、<=查看右边值是否小于等于左边值
  • 逻辑运算符:&&逻辑 和 运算符、||逻辑 或 运算符、!逻辑 非 运算符
  • 位运算符:&按位与运算符 ”&” 是双目运算符,其性能是参加运算的两数各对应的二进位相与;|按位或运算符 ”|” 是双目运算符,其性能是参加运算的两数各对应的二进位相或;^按位异或运算符 ”^” 是双目运算符,其性能是参加运算的两数各对应的二进位相异或;<<左移运算符 ”<<“ 是双目运算符,左移 n 位就是乘以 2 的 n 次方,其性能把 ”<<“ 右边的运算数的各二进位全副左移若干位,由 ”<<“ 左边的数指定挪动的位数,高位抛弃,低位补 0;>>右移运算符 ”>>” 是双目运算符,右移 n 位就是除以 2 的 n 次方,其性能是把 ”>>” 右边的运算数的各二进位全副右移若干位,”>>” 左边的数指定挪动的位数。

golang 的运算合乎其余开发语言是统一的,这里不做更多介绍。

数组

数组是具备雷同惟一类型的一组已编号且长度固定的数据项序列,这种类型能够是任意的原始类型例如整型、字符串或者自定义类型。

// 形如 var 变量名 [数量] 变量类型
var stuName [20] string

指针

一个指针变量指向了一个值的内存地址。

var-type 为指针类型,var_name 为指针变量名,* 号用于指定变量是作为一个指针。
相似于变量和常量,在应用指针前你须要申明指针。指针申明格局如下:

// var var_name *var-type
var stuNameIndex *string

构造体

构造体定义须要应用 type 和 struct 语句。struct 语句定义一个新的数据类型,构造体中有一个或多个成员。type 语句设定了构造体的名称。构造体的格局如下:

// 形如 type variable_type struct {……}
type People struct {
  var id    int
  var name  string
}
var people People
people.id   = 1
people.name = "Sinclar"

切片

Go 语言切片是对数组的形象。

Go 数组的长度不可扭转,在特定场景中这样的汇合就不太实用,Go 中提供了一种灵便,性能强悍的内置类型切片(“ 动静数组 ”), 与数组相比切片的长度是不固定的,能够追加元素,在追加时可能使切片的容量增大。

var slice1 []type
// 也能够指定长度
var slice1 []type = make([]type, 10)
// 也能够简写为
slice1 := make([]type, 10)

条件语句

条件语句有两种,一种是 if……else…… 语句,另一种是 switch 语句,还有一种 select 语句。

  • if……else……
if 条件 {执行代码} else {执行代码}
  • switch 语句
switch condition {
    case condition1:
        ...
    case condition2:
        ...
    default:
        ...
}
  • select 语句

这波及到一些高级语法,本篇先不讲述,我将在下一篇具体解释,感兴趣的同学们能够本人查阅材料先学习一下。

switch 语句中没有 break 语句,golang 的语法通过优化后,在某个 case 执行结束后就退出 switch 了,不会再接着往下执行;

如果心愿执行了某个 case 之后接着往下执行,能够在每个 case 最初应用 fallthrough 关键字。留神,应用 fallthrough 关键字后,前面的 case 是强制执行,无论 condition 是否为 true

for 循环语句

golang 的循环语句只有一种。那就是 for 语句。for 语句有几种模式。

  • 规范格局
/*for init; condition; next {doSomething}*/
for i:=0; i<20; i++ {fmt.Println("i is: %d", i)
}
  • 非凡格局
// 有限循环
for {doSomething}
for true {doSomething}
// 省略 init 或 next
for ; sum<100; {sum = sum + 1}
  • 管制语句

break、continue 和 goto 是用于 for 语句或 switch 语句内的管制语句,其用法于 c 或 c ++ 中的用法类似,这里就不再赘述了。

看到这里,大家应该都感觉似曾相识,如同学过的编程语言都有这些货色。所以大家应该不必花太多工夫在根底语法上,几分钟就能看完。看完这些基础知识,大家应该能够写出一些简略代码来验证明天的根底语法。

然而,这里也只是解说了一些根底用法,在接下来的学习中,咱们还会遇到更多高级的用法,包含 select、channel、办法、切片、范畴、汇合和接口等内容。

golnag 的开发者工具

我当初应用的开发者工具是 GoLand。这是一个十分弱小的 golang 开发工具。因而在此我也举荐大家应用 GoLand 开发工具来开发咱们的 golang 博客零碎。

正文完
 0