首页 > 其他分享 >Go语言入门(go环境配置,变量和常量)

Go语言入门(go环境配置,变量和常量)

时间:2023-04-01 12:23:13浏览次数:53  
标签:入门 fmt tmpA Go func go main 变量

go语言特点

  1. 天然支持高并发
  2. 语法简单,去掉很多臃肿的东西
  3. 优化的内存分配和垃圾处理
  4. 完善的标准库

go安装

下载:Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)

go version判断是否安装成功

配置环境变量GOROOT ,GOPATH

go env查看环境变量配置

goland开发工具安装

Download GoLand: A Go IDE with extended support for JavaScript, TypeScript, and databases (jetbrains.com)

第一个go程序(HelloWorld)

​ 当编译器发现某个包的名字为main时,它一定也会发现名为main()的函数,否则不会创建可执行文件,main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名

// 可执行文件必须有main包,一个项目只有一个main
package main

// 导入一个系统包fmt用来输出(format)
import "fmt"

func main() {
	//打印字符串
	fmt.Println("HelloWorld!")
}

控制台执行方法:go run + 文件名

变量 (显示声明变量数据类型,var 关键字,变量名小驼峰)

​ go语言时静态语言类型,因此每次定义变量必须声明其数据类型,定义结束后没有使用会爆错,没有定义初值,会自动定义默认值

1. 整型和浮点型默认0和0.0
1. 字符串变量的默认值为空字符串
1. 布尔型变量默认为false
1. 切片,函数,指针变量默认为nil

单行变量定义 var + 变量名 + 数据类型

package main

import "fmt"

func main() {
    // 定义字符串型变量tmp
	var tmp string = "robot01"
	fmt.Println(tmp)
}

批量定义变量 var ()

package main

import "fmt"

func main() {
	var (
		name    string
		age     int
		factory string
	)
	name = "robot01"
	age = 18
	factory = "factory01"
	fmt.Printf("Name:%s \nAge:%d \nFactory: %s \n", name, age, factory)
}

短变量声明以及初始化 变量名 := 值

​ 编译器可以根据右值的数据类型,自动推导变量的数据类型,左值的变量名,不得与其他变量名相同

package main

import "fmt"

func main() {
	name := "robot01"
	age := 18
	factory := "factory01"
	fmt.Printf("Name:%s \nAge:%d \nFactory: %s \n", name, age, factory)
}

变量交换

package main

import "fmt"

func main() {
	tmpA := 100
	tmpB := 200
    // tmpA 与 tmpB进程值交换,不需要使用中间键
	tmpA, tmpB = tmpB, tmpA
	fmt.Printf("tmpA = %d \ntmpB = %d", tmpA, tmpB)
}

匿名变量

​ 匿名变量的特点是一个下划线 "_" ,下划线本身就是一个特殊的标识符,被称为空白标识符,它可以像其他标识符一样用于变量的声明或者赋值(任何类型都可以赋值给它),但任何赋值给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其他变量进行赋值或运算。使用匿名变量时,只需要在变量声明的地方使用下划线替换即可

package main

import "fmt"

func test() (int, int) {
	return 100, 200
}

func main() {
    // test()函数固定返回两个返回值,但是只需要第一个返回值,因此使用匿名变量来抛弃掉第二个返回值
    // 使代码更加的灵活
	tmpA, _ := test()
	fmt.Printf("tmpA = %d", tmpA)
}

​ 匿名变量不占用内存空间,不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用

变量的作用域

局部变量(在函数内部定义的变量)& 全局变量(在函数外部定义的变量)

⭐局部变量和全局变量可以使用同样的名字,使用时依据就近原则

⭐全局变量必须使用var关键字定义,(:=)不能定义全部变量

import "fmt"

var tmpA int = 100

func test() {
	fmt.Printf("test() => tmpA = %d \n", tmpA)
}
func main() {
	tmpA := 200
	fmt.Printf("main() => tmpA = %d \n", tmpA)
	test()
}
// 输出:
// main() => tmpA = 200
// test() => tmpA = 100

常量(const)(简单值的标识符,不可以被修改)

package main

import "fmt"

func main() {
	// 显式定义常量
	const URL1 string = "www.baidu.com"
	// 隐式定义常量
	const URL2 = "www.tequila.com"
	// 批量定义常量
	const ROBOTNAME, ROBOTAGE = "robot-01", 18
	fmt.Printf("URL1: %s\nURL2: %s\nROBOTNAME: %s\nROBOTAGE: %d\n", URL1, URL2, ROBOTNAME, ROBOTAGE)
}

iota 常量

​ iota,可以被认为是一个可以被编辑器修改的常量,是go语言里的常量计数器,iota在const关键字出现时将被重置为0,const 中每新增一行常量声明将使iota计数一次

package main

import "fmt"

func main() {
	const (
		tmpA = iota
		tmpB = iota
		tmpC
		tmpD
		tmpE = "String"
		tmpF = iota
		tmpG
	)
	fmt.Println(tmpA, tmpB, tmpC, tmpD, tmpE, tmpF, tmpG)
}

标签:入门,fmt,tmpA,Go,func,go,main,变量
From: https://www.cnblogs.com/te9uila/p/17278396.html

相关文章

  • django:数据库的一些进阶知识点与应用
    一,连接池使用第三方程序向数据库发出数据操作请求前,都需要先创建到数据库的连接,这个操作会占用大量资源。所谓的资源消耗,一是对数据库连接数量的消耗;二是对系统内存资源的消耗;三是连接建立过程对时间的消耗,时间消耗角度可以参考这篇博客。django默认会在请求进来的时候创建......
  • Linux系统之部署Go语言开发运行环境
    (Linux系统之部署Go语言开发运行环境)一、Go语言介绍1.Go语言简介Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。2.Go语言的撰写风格每行程序结束后不需要撰写分号。左大括号不能够换行放置。if判断式和for循环不需要以小括号......
  • 《Mysql基础》【Mysql表的基本操作 新建表、修改表、删除表、外键约束、主键约束、完
     --mysql数据库程序设计笔记:表基本操作:1、新建表:格式如:1)、建表加主键:createtable表名(idintNOTNULLauto_incrementcomment'自增主键id',列名类型(范围)comment'列备注',...primarykey(id))engine=InnoDB;2)、建表加候选键副键约束createtable表名......
  • 《Mysql基础》【Mysql删除数据库、新建数据库、修改数据库】 编程入门 学习分享 【公
     --mysql数据库程序设计笔记:数据定义:1、创建数据库:如:createdatabasedb_pro_1defaultcharsetgb2312collategb2312_chinese_ci;QueryOK,1rowaffected(0.00sec)或:createdatabasedb_pro_2defaultcharactersetgb2312defaultcollategb2312_chinese_ci;......
  • go创建文件的软链接,不支持windows
    funcmain(){err:=os.Symlink("/data/da","/home/go/da")iferr!=nil{fmt.Println(err)//即使是错误也不退出}err=os.Remove("/home/go/da")iferr!=nil{fmt.Println("/home/go/dafileisremove",......
  • 由入门题回想起来的哈希表
    洛谷P2550P2550[AHOI2001]彩票摇奖-洛谷|计算机科学教育新生态(luogu.com.cn)可以看到这是个入门题,完全可以用暴力查找(for循环二重嵌套)来实现,但是这个查找形式让我想起了一个月之前学的哈希表(HashMap)众所周知,利用哈希表可以将查找的时间复杂度优化到O(1)的水平,而且本题需......
  • Go语言规范汇总
    统一规范篇合理规划目录本篇主要描述了公司内部同事都必须遵守的一些开发规矩,如统一开发空间,既使用统一的开发工具来保证代码最后的格式的统一,开发中对文件和代码长度的控制,必须经过go语言自带的检测机制等。【原则1.1】合理规划目录,一个目录中只包含一个包(实现一个模块的功能),......
  • 《Mysql基础》【Mysql函数 mysql数据类型】 编程入门 学习分享 【公开免费】
    -- --mysql数据库程序设计笔记:gb2312是国标,中国字库。一个汉字2个字节。utf8国际通用标准。包含gb2312;外键只能引用主键和候选键。外键只可以在InnoDB中使用。字段约束:字段类型后可加:check(多个列判断条件)列为:column用col1、col2....代替一、mysql函数:聚合函数:1、......
  • 《Mysql基础》【Mysql添加外键(新增外键)、mysql添加主键、mysql删除外键】 编程入门 学
    --mysql数据库程序设计笔记:--新建表:foreignkey加外键举例:createdatabasedb_test_1defaultcharactersetgb2312defaultcollategb2312_chinese_ci;usedb_test_1;createtablea(idintnotnullauto_incrementcomment'id自增',ainfovarchar(255),primarykey......
  • 《Mysql基础》【Mysql小数浮点数】double float decimal数据类型 编程入门 学习分享
    -- --mysql数据库程序设计笔记:-------------小数测试--------------------double浮点小数(最多小数位后15位,)使用8个字节存储。--float单精度小数:(最多小数位后6位)使用4个字节存储。--举例保留2位:float(18,2),或:double(20,2)--decimal(最多小数位后30位)(存储空间更优,更小,......