Go语言学习Day01

一.Go语言环境搭建

  1. 官方镜像站:https://golang.google.cn/dl/

  2. 在这里插入图片描述

  3. 安装好后打开cmd,输入:go version检查go语言版本

  4. 新建一个文件夹用来以后保存你自己的Go源代码

  5. 配置GPPATH:

    1.在这里插入图片描述

    1. 在这里插入图片描述

    3.在这里插入图片描述

    1. 找到系统变量,如果里面没有GOPATH,需要手动添加

      在这里插入图片描述

      注意:这里写的是你刚刚创建以后保存go源码时的路径

    2. 在新建的文件夹中再新建三个目录

      1. src :用来存放我们自己写的源代码
      2. pkg:编译的中间状态的包需要放在pkg中
      3. bin:可执行文件在这里
    3. 需要将bin目录也添加到环境变量中

      在这里插入图片描述

      ​ 将原先的bin更改为你所创建的目录路径

      在这里插入图片描述

    4. 重新打开一个cmd 输入:go env, 是否会出现go的相关的环境变量

Go项目目录结构:

适合个人开发者:

因为源码是存放在GOPATHsrc目录下,那我们可以按照下图来组织我们的代码。

在这里插入图片描述

目前流行的项目结构:

Go语言中也是通过包来组织代码文件,我们可以引用别人的包也可以发布自己的包,但是为了防止不同的包的项目名冲突,我们通常使用顶级域名来作为前缀,这样就不用担心项目名冲突。

因为不是每个个人开发者都拥有自己的顶级域名,所以目前流行的方式是使用个人的github用户名来区分不同的包。

在这里插入图片描述

适合企业开发者

在这里插入图片描述

二.Go开发编辑器:

Go语言采用UTF-8编码的文本存放源代码,理论上使用任何一款文本编辑器都可以进行Go开发,推荐Vs Code

配置Vs Code

  1. 先将中文插件安装

    在这里插入图片描述

  2. 安装Go扩展

    在这里插入图片描述

  3. 安装插件失败可参考:https://blog.csdn.net/qqliuzhiwei/article/details/107452988

三.第一个Go语言程序

Hello World

package main

import "fmt"

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

编译:

在代码目录下执行:

go build

或者在其他目录下:

go build src后面的路径/项目目录名字

指定编译后的文件名:

go build -o 名字.exe

运行时报错:

go: go.mod file not found in current directory or any parent directory; see ‘go help modules’

打开cmd运行一下命令,重新go build即可

go env -w GO111MODULE=auto

执行

编译成功后会在项目目录下生成一个.exe可执行文件,直接在终端中输入可执行文件就可以运行

常用命令

go run 名字.go

可直接运行源代码.go文件

go install

执行两步:

  1. 编译
  2. 将.exe文件拷贝到bin目录

四.跨平台编译:

只需指定目标操作系统的平台和处理器架构即可:

SET CG0_ENABLED=0//禁用CGO
SET GOOS=linux //目标平台是linux
SET GOARCH=amd64 //目标处理器架构是adm64
go build

五.变量与常量:

所有的.go文件开头都要使用package来声明这个文件属于哪个包,例如:package main 这个.go文件属于main

package main

//导入语句
import "fmt"

//在func外面只能放变量,函数,常量,类型的声明

//程序的入口
func main() {
	fmt.Println("Hello World")
}

标识符:

在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123

关键字:

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

变量:

标准声明:

Go语言的标准声明格式为:

var 变量名 变量类型

变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号

eg:

var name string
var age int
var isOk bool

批量声明:

var(
	name string
	age int
	isOk bool
)

变量的初始化:

func main() {
	name = "张三"
	age = 20
	isOk = true
	//在Go语言中非全变量声明了必须使用,不使用编译不过去
	fmt.Print(name)          //打印后不会换行
	fmt.Printf("年龄:%d", age) //%s:占位符,使用age替换占位符
	fmt.Println(age)         //打印后会自动换行
	fmt.Println(isOk)
}

也可以声明变量同时赋值:

var s1 string = "李四"

或一次初始化多个变量:

var name,age = "WW",20

类型推导:

根据值判断该变量是什么类型

var name,age = "WW",20

短变量声明:

在函数内部,可以使用更简洁的:=方式声明变量,注意只能在函数里面使用

func main(){
	s2 := "哈哈"
	fmt.Print(s2)
}

匿名变量:

在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示,例如:

func foo() (int, string) {
	return 10, "Q1mi"
}
func main() {
	x, _ := foo()
	_, y := foo()
	fmt.Println("x=", x)
	fmt.Println("y=", y)
}

匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua等编程语言里,匿名变量也被叫做哑元变量。)

注意事项:

  1. 函数外的每个语句都必须以关键字开始(var、const、func等)
  2. :=不能使用在函数外。
  3. _多用于占位,表示忽略值。

常量:

相对于变量,常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值。 常量的声明和变量声明非常类似,只是把var换成了const,常量在定义的时候必须赋值。

const pi = 3.1415
const e = 2.7182

声明了pie这两个常量之后,在整个程序运行期间它们的值都不能再发生变化了。

多个常量也可以一起声明:

const (
    pi = 3.1415
    e = 2.7182
)

const同时声明多个常量时,如果省略了值则表示和上面一行的值相同。 例如:

const (
    n1 = 100
    n2
    n3
)

iota:

iota是go语言的常量计数器,只能在常量的表达式中使用。

iota在const关键字出现时将被重置为0。

const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。

使用iota能简化定义,在定义枚举时很有用。

举个例子:

const (
		n1 = iota //0
		n2        //1
		n3        //2
		n4        //3
	)

常见iota:

使用_跳过某些值

const (
		n1 = iota //0
		n2        //1
		_
		n4        //3
	)

iota声明中间插队

const (
		n1 = iota //0
		n2 = 100  //100
		n3 = iota //2
		n4        //3
	)
	const n5 = iota //0

定义数量级 (这里的<<表示左移操作,1<<10表示将1的二进制表示向左移10位,也就是由1变成了10000000000,也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位,也就是由10变成了1000,也就是十进制的8。)

const (
		_  = iota
		KB = 1 << (10 * iota)
		MB = 1 << (10 * iota)
		GB = 1 << (10 * iota)
		TB = 1 << (10 * iota)
		PB = 1 << (10 * iota)
	)

多个iota定义在一行

const (
		a, b = iota + 1, iota + 2 //1,2
		c, d                      //2,3
		e, f                      //3,4
	)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值